Realm RealmCollectionChange获得更改属性

时间:2017-09-18 15:53:08

标签: swift realm

我有一个“所有者”类,其列表属性为狗

class Owner: Object {

    dynamic var name: String?

    let list = List<RString>()

}

我在Owner

列表中添加了通知令牌
owners?.addNotificationBlock { [weak self] (changes: RealmCollectionChange) in 

    updateUI()

}

问题是,每当RString的属性发生更改,并且其中一个所有者的列表中已更改RString时,就会触发此通知

我想要的是忽略RString对象发生的变化并避免触发通知

有没有办法像collectionChanges中的objectChange一样向let token2 = state.addNotificationBlock(ignoringProperties: ["noisyProp"], block: { change in // handle change and avoid being notified for properties we don't care about }) 添加“ignoringProperties”?还是其他任何解决方法?!  比如获取已更改属性的名称并手动忽略它?

我在Realm官方视频中看过这段代码,但无法将其复制到collectionChanges

prefix

source

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

传递到更新通知处理程序的RealmCollectionChange枚举的.update大小写仅包含查询返回的Results中包含的任何已修改对象的索引。因此,截至目前,似乎无法阻止更新通知被特定属性触发。

作为替代方案,您可以考虑通过创建单独的Dog对象并为其提供ownerId属性并从所有者对象中删除dog list属性来对数据进行不同的建模。这样,您就可以避免在修改拥有的Owner时在Dog查询结果上触发更新通知。