经过淘汰the documentation后,我最近得知共享领域(全局可用于我的应用程序的所有用户)只能用Realm.asyncOpen
查询。例如,我有一个/shared
领域,它对任何用户都具有只读权限。我试图以通常的方式查询它,但它返回了零个对象。但是,如果我查询它这个样子,它的工作原理:对象如何在Swift中的共享领域中同步
Realm.asyncOpen(configuration: sharedConfig) { realm, error in
if let realm = realm {
// Realm successfully opened
self.announcements = realm.objects(Announcement.self)
print(self.announcements)
self.tableView.reloadData()
} else if let error = error {
print(error)
}
}
这种方法明显比通常的境界查询速度较慢,因为它似乎是从服务器,而不是本地,已同步境界获取数据。
这是否意味着拉下来的对象永远不会存储在本地的副本中,而是每次访问时都从ROS中查询?
换句话说,共享领域拉和未同步?
很好的答案,谢谢。那么,我可以通过将领域全局写入来解决整个问题吗?我并不担心这个问题的安全性,因为我的应用程序不会提供任何写入领域的机制。 –
是的,如果Realm是全局可写的,你就不会有这个问题,但我想认为我所概述的解决方案不会牺牲访问控制模型那么麻烦,但那是你的呼叫。 – jpsim
嗯......你是说你在用'asyncOpen'初始化'/ shared'领域后,我仍然可以用'NotificationToken'来监听更改,并像任何普通领域一样进行交互?我只需要'asyncOpen'来获取模式更改? –