gpt4 book ai didi

iOS Realm 检测 RLMObject 的变化

转载 作者:行者123 更新时间:2023-11-29 00:08:03 29 4
gpt4 key购买 nike

我写过这样的代码来监听 Post 对象的变化。

    notification = Post.allObjects(in: RLMRealm.encryptedRealm()! as! RLMRealm).addNotificationBlock({ (results, changes, error) in
let pred = NSPredicate(format: "tag == %@", self.postTag)
self.posts = CommonResult.objects(with: pred).sortedResults(usingKeyPath: "id", ascending: true)

if let _ = changes {
if (changes!.insertions.count > 0 || changes!.deletions.count > 0 || changes!.modifications.count > 0) {
self.tblListing.reloadData()
}
}
})

在我的 Post 对象中,有 2 个属性。一个是“rowHeight”,另一个是“isLikeByMyself”。

我只想在“isLikeByMyself”更改时重新加载表格 View 。我该怎么办?是否可以?

最佳答案

您至少有两个选择。

如果您没有很多Post 对象,您可能需要考虑注册object notifications。在他们每个人身上。对象通知会告诉您更改了哪些属性以及如何更改,因此您可以使用该信息重新加载 TableView 。但是,您需要在每个 Post 对象上注册一个单独的通知,如果您有大量对象,这可能不切实际。

这是一个替代想法。添加ignored Post 的 bool 属性调用类似 isLikeWasChanged 的内容,并添加一个 Swift didSet block ,将 isLikeWasChanged 设置为 true 任何时候你修改 isLikeByMyself。然后,在现有的集合观察 block 中,仅当至少有一个 isLikeWasChangedtrue 时才重新加载 TableView ,记住将它们全部设置回 false 在你离开街区之前。

关于iOS Realm 检测 RLMObject 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47416591/

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