如何在核心数据关系真正改变之前观察它?

Posted

技术标签:

【中文标题】如何在核心数据关系真正改变之前观察它?【英文标题】:How to observe a Core Data relationship before it gets actually changed? 【发布时间】:2014-01-12 13:28:23 【问题描述】:

我试图找到一种方法来观察核心数据关系(更具体地说,是无序关系的已删除项),然后再实际更改。您可以将其想象为从其他 Cocoa API 获知的“将更改”通知。

原因是我想根据这些更改更新 UI,我需要一个不存储在托管对象中而是存储在其他数据结构中的参数(在我的情况下,它是来自 NSArrayController 的索引) .仅当项目尚未从关系中删除时,我才能检索参数。

获得此类“将改变”通知的唯一方法是覆盖自定义NSManagedObject 子类中的KVO 方法-willChangeValueForKey:withSetMutation:usingObjects: 并转发此信息。问题是the documentation 说:“你不能重写这个方法。” 这让我想找到一个更好的解决方案。

    在这种情况下,“将改变” 方法是否正确? 如果是这样,我该如何实现?如果不是,我应该如何以其他方式解决上述问题?

【问题讨论】:

【参考方案1】:

您可以直接覆盖关系的 setter 方法。

【讨论】:

确切地说,我将覆盖突变方法,而不是 setter,但这就是要走的路!谢谢! 您写道:“原因是我想根据这些更改更新 UI” - 那么现在您正在从模型代码修改您的 UI?顺便说一句:嗨,威尔! :D

以上是关于如何在核心数据关系真正改变之前观察它?的主要内容,如果未能解决你的问题,请参考以下文章

SCRUM 革命

通过核心数据关系改变属性值

origin三维图数据过少,曲面不圆滑,如何处理可以使曲面圆滑。拟合、差值等,不能改变原来的走势

设计模式-观察者模式

核心数据:重启时排序的一对多关系

如何在核心数据上创建可观察对象并将其绑定到 tableView