与 Realm 对象服务器的新连接将循环访问通知历史记录



ROS 2.0b-285, Ubuntu 16.04.3, Realm Cocoa 3.0.0-beta 2, Swift 3.1, Xcode 8.3.3, macOS 10.12.6

请看此视频,其中演示了该问题:http://d.pr/v/O9GIxF

此仪表板屏幕具有以下代码:

override func viewDidLoad() {
super.viewDidLoad()
refreshData()
//Listen for Realm changes
let realm = try! Realm()
notificationToken = realm.addNotificationBlock { notification, realm in
self.refreshData()
}
}

refreshData()函数只有获取 Realm 数据并更新 UI 的代码。

该视频显示应用程序更新到数据随时间变化的各种历史快照,直到它最终赶上最新数据并停止。

为什么要这样做?为什么它不只获取最新数据并触发通知块一次?

addNotificationBlock的当前实现会在中间历史快照处触发回调,因为领域通过传输历史记录而不是状态来同步。因此,如果您想开始仅接收有关连接后发生的更改的通知,则应尝试以下方法:

  1. 使用 addProgressNotification(( 调度下载方向回调。
  2. 像最初一样设置通知块,但仅在下载完成后(从 1 次触发的回调(。

最新更新