核心数据:观察嵌套属性

Posted

技术标签:

【中文标题】核心数据:观察嵌套属性【英文标题】:Core Data: observing nested properties 【发布时间】:2012-11-04 15:50:38 【问题描述】:

我的核心数据模型中有一个实体类别。类别与文章有一对多的关系。文章有一个属性 read,它是一个布尔值。

我想观察未读文章的数量(这样我可以在标题中显示)。

第一种方法是这样的:

    [self.category addObserver:self forKeyPath:@"articles.@sum.read" options:NSKeyValueObservingOptionNew context:nil];

但这不起作用。我可以观察文章集合以查看是否添加了某些内容,并单独观察所有元素。我可以让这个工作,但我想知道是否有更简单的方法。有什么提示吗?

(这可能是Using KVO to observe changes to a property on an object inside a collection in Objective-C的重复,但我仍然认为应该有更好的方法)。

【问题讨论】:

【参考方案1】:

您需要如何准确地知道发生了什么变化以及何时发生变化?如果您的要求非常简单,您可以收听NSManagedObjectContextObjectsDidChangeNotification 通知并检查userInfo 以获取NSUpdatedObjectsKey。这些对象将通过其-changedValues 方法返回更改。

如何将事物添加到articles 集合中?直接挂钩而不是使用 KVO 可能最简单。

【讨论】:

我发现 changedValues 在响应该通知时会返回旧值。

以上是关于核心数据:观察嵌套属性的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 观察数组内的嵌套属性

使用视图控制器淘汰嵌套的可观察对象

深入 Laravel 内核之观察者模式

避免在循环中使用嵌套的可观察订阅的正确方法是啥?

如何通过在 swift 中实现观察者从 Firebase 实时数据库中获取嵌套数据

比较嵌套循环中的信息并在匹配时进行标记