【问题标题】:Realm Async is not opening领域异步未打开
【发布时间】:2020-07-21 19:19:21
【问题描述】:

我不知道我做错了什么。我正在尝试从我的 MongoDB 领域云同步到本地数据库以供访问。

我正在遵循此说明 https://docs.mongodb.com/realm/ios/sync-data/#ios-sync-data

这是我的 mongoDB Realm 屏幕截图。它显示了我想与partioningKey同步的项目。

这是我的代码

override func viewDidLoad() {
    super.viewDidLoad()
     fetchStoreItems()
}

  func fetchStoreItems(){
        let user = app.currentUser()

        let partitionValue = "store=walmart"
        
        Realm.asyncOpen(configuration: user!.configuration(partitionValue: partitionValue),
        callback: { (maybeRealm, error) in
            guard error == nil else {
                fatalError("Failed to open realm: \(error!)")
            }
            guard let realm = maybeRealm else {
                fatalError("realm is nil!")
            }
            // realm opened
            // All tasks in the realm
            let storeItems = maybeRealm!.objects(Item.self)
                     let tasksThatBeginWithA = storeItems.filter("name beginsWith 'R'")
                     print("these are the item amount", tasksThatBeginWithA.count)
        })
    }

身份验证工作正常,但获取数据返回空并显示此消息

同步:Connection2:Session2:client_reset_config = false,领域存在 = true,异步打开 = false,客户端重置 = false

我做错了什么,我该如何解决?

【问题讨论】:

  • 这里可能存在许多问题。首先,这是危险的Realm.asyncOpen(configuration: user! 请处理可选项,就好像它们可以为 nil 一样来保护您的代码。此外,此app.currentUser() 可能无法正确解析。此let partitionValue = "store=walmart" 可能与您的 Realm 应用程序控制台中的分区键不匹配 - 请仔细检查。请在保护后使用realm 而不是maybeRealm!。你是说let storeItems 是零吗?

标签: swift mongodb realm


【解决方案1】:

很确定您访问的是错误的对象,但是通过这个问题很难判断。 Items 是屏幕截图中突出显示的对象,所以它似乎就是您所追求的对象(?)

看起来你的数据库有两个对象

Item

items

但您的代码正在访问项目一

let storeItems = maybeRealm!.objects(Item.self)

不是items 那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多