【问题标题】:Partial Realms - Why and When are They Created?部分领域 - 为什么以及何时创建它们?
【发布时间】:2019-08-19 05:09:59
【问题描述】:

我正在使用 Realm 并构建一个 Swift 移动应用程序。我真的很难理解为什么以及何时创建部分领域。

这是我的场景:

用户登录到应用程序并被带到第一个视图控制器。

在视图中的第一个视图控制器中确实加载了,我正在执行一个查询来获取当前用户,订阅该查询并添加一个观察者让我知道数据何时同步:

let currentUserArr = realm.objects(DBUser.self).filter("id == %@", userId)
self.subscription = currentUserArr.subscribe(named: "current user")
self.subscriptionToken = self.subscription.observe(\.state, options: .initial) { state in
            switch state {
            case .creating:
                print("creating")
            case .pending:
                print("pending")
            case .complete:
                print("complete")
                self.artist = currentUserArr[0]
            case .invalidated:
                print("invalidated")
            case .error(let err):
                //seal.reject(err)
                print(err)
            }
}

这是有道理的,如果我检查 Realm Cloud,我会创建一个新的部分领域,其路径为:

/db/__partial/DyeOy3OR4sNsqMi2OmDQQEzUa8F3/~7f11cf52

但是,这就是我的困惑开始的地方。我注销用户。我重新登录并再次执行上面的代码。我的想法是 Realm 只会重用已经创建的部分,而是创建一个全新的部分。

/db/__partial/DyeOy3OR4sNsqMi2OmDQQEzUa8F3/~8bc7bc49

这是设计使然,还是我应该以某种方式重用部分而不是每次执行查询时都创建一个新的(即使它是由同一用户执行的)?

我也在 Realm 论坛上发帖:

https://forums.realm.io/t/realm-platform-realm-path-partial-s/2833

【问题讨论】:

  • 你用同一个用户再次登录吗?
  • 嗨@PavelPoley 是的,我确实第二次使用同一用户登录。不应该重新使用初始部分,因为它已经包含用户需要的数据子集吗?

标签: realm realm-mobile-platform realm-cloud


【解决方案1】:

我不相信我实际上是在注销当前同步用户。经过进一步测试,一旦我退出并重新登录,现有的部分就会被重新使用。这不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2011-08-03
    • 1970-01-01
    • 2018-04-28
    • 2013-06-16
    相关资源
    最近更新 更多