gpt4 book ai didi

swift - Realm 通知连续多次触发

转载 作者:行者123 更新时间:2023-11-28 12:17:03 24 4
gpt4 key购买 nike

swift 3.1,Xcode 8.3.3

我有一个 Realm 通知,它在我的应用程序的 View Controller 中设置,在我的应用程序启动后,它连续触发了 4 次。

let realm = try! Realm()
notificationToken = realm.addNotificationBlock { notification, realm in
print("notif: \(notification)") <-- Logs 4 times in a split second
self.refreshData()
}

由于 refreshData() 方法刷新了我的 UI(其中包含绘制的图形),因此每次刷新时我都会看到抖动/闪烁。

有没有办法将这些通知聚合到一个通知中,以便我只获得一次 UI 刷新?

最佳答案

如果您在 Realm 实例上设置了一个通知 block ,您将在每个写入事务中收到一个通知。要将单个通知“聚合”为一个通知,您需要将单独的写入事务合并为一个。

例如,这段代码会触发两个通知:

try! realm.write {
realm.add(Person(value: ["name":"John"]))
realm.add(Person(value: ["name":"Chris"]))
}

try! realm.write {
realm.add(Person(value: ["name":"James"]))
}

虽然这段代码只触发一个:

try! realm.write {
realm.add(Person(value: ["name":"John"]))
realm.add(Person(value: ["name":"Chris"]))
realm.add(Person(value: ["name":"James"]))
}

根据@bdash 的评论进行澄清,即使 docs state that “每次提交涉及该 Realm 的写事务时,无论写事务发生在哪个线程或进程上,都会触发通知处理程序……”,实际上是来自多个写事务的通知可能会根据通知代码处理写入事务所需的时间合并为一个。

关于swift - Realm 通知连续多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46136091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com