我在Realm Objective-C v2.4.3中遇到了一个问题,如果修改不影响整体查询结果,则不会针对修改触发收集通知块。
举一个简化的例子。
Feed
对象和FeedItem
对象。 Feed具有items
RLMArray属性。
RLMArray<FeedItem *><FeedItem> *items
我为RLMResults设置了一个集合通知块,其中查询为:
[Feed objectsWhere:@"ANY items.status > 0"]
如果我从0修改状态属性,则会触发插入更改 - > 1.如果我有一个查询的上限并且它移出了那个,那么删除会一样。但是,对FeedItem状态属性的任何更改(继续与查询匹配(例如从1 - > 2修改)都不会触发通知更改块,因为整体查询结果不会受到此更改的影响。
我是否预计此更改会受到收集文档中提及的修改?
只要对象的属性,就会通知您有关修改的信息 已经改变了,这是以前收藏的一部分而且仍然是 一部分。
您修改属于该人的狗的年龄属性。
这使得可以离散地控制动画和 对UI内容的视觉更新,而不是 每次发出通知时都会随意重新加载所有内容。
我错过了让这项功能正常工作的东西吗? CollectionView的数据源是RLMResults,我想重新加载一个单独的CollectionViewCell以反映FeedItem状态的更新。
答案 0 :(得分:0)
In the meantime I have worked around this by adding a lastModified
property to Feed
and then when making a change on FeedItem
I update last modified using the inverse relationship.
self.feed.lastModified = [NSDate date];
Not that great, but it fires a modification change in the collection notification which is what I was after.
Happy to accept another answer that has a better way to achieve this.
Also found two existing Realm github issues which I've commented on
https://github.com/realm/realm-cocoa/issues/4305#issuecomment-283688989
https://github.com/realm/realm-cocoa/issues/3885#issuecomment-283274197