收到有关任何子项更改的通知

时间:2017-12-30 10:31:36

标签: ios swift realm

我正在使用Realm for Swift构建类似文档的模型。我的架构大致如下:

Document
|
+- root: Group
   |
   +- children: [Node]
      +- Text: Node
      +- Image: Node
      +- Group: Node

例如:

Document
|
+- root
  |
  +- text
  |
  +- group
  |  |
  |  +- image
  |  |
  |  +- text
  |
  +- text 

每当任意深度嵌套的子项发生任何变化时,我都希望收到通知,哪个对象确实已更改,因此我可以修剪表示该节点的视图树并使用最新数据重绘它

似乎观察给定RLMObject上的更改只会通知即时属性更改,而观察RLMRealm上的所有更改并不会报告实际更改的内容。

我是否缺少一个API? 谢谢!

1 个答案:

答案 0 :(得分:1)

除了RLMObject和RLMRealm之外,您还可以观察集合的变化。将通知块添加到集合属性Document.root.children。您还可以获取/查询Node类型的RLMObjects,并向RLMResults对象添加通知块。

有关详情,请参阅https://realm.io/docs/objc/latest#collection-notifications

一个限制是您不会知道对象中的哪个属性导致通知触发,只有哪个对象发生更改。有一个关于此问题的公开GitHub问题:https://github.com/realm/realm-cocoa/issues/3485