我正在使用 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
我不相信我实际上正在注销当前的同步用户。经过进一步测试,一旦我注销并重新登录,现有的部分就会被重新使用。这不是问题。