objective-c - 如何在核心数据关系实际发生变化之前观察它?

标签 objective-c macos cocoa core-data nsarraycontroller

我正在尝试找到一种在实际更改之前观察核心数据关系(更具体地说是无序关系中已删除的项目)的方法。您可以将其想象为其他 Cocoa API 已知的“将更改”通知。

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

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

  1. 在这种情况下,“将会改变”的方法正确吗?
  2. 如果是这样,我怎样才能实现它?如果不是,我应该如何通过其他方式解决上述问题?

最佳答案

您可以只重写关系的 setter 方法。

关于objective-c - 如何在核心数据关系实际发生变化之前观察它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075182/

相关文章:

macos - 以编程方式篡改 Mac OSX 菜单栏设置

php - Mac OSX 10.8 PHP MySQL

objective-c - (iOS, TheOS) %hook 到全局应用程序功能

c++ - 使用 appendBezierPathWithGlyphs 获取字形轮廓的问题

iphone - UIGestureRecognizer 问题

cocoa - Cocoa 中的自动键值观察

cocoa - 如何反转 NSMutableArray 中对象的顺序?

ios - Cocoa中如何识别和使用ASType

python - 在 Mac OS 终端中运行 python 时内存泄漏

ios - RestKit 0.20.0-rc1 - POST 后重复对象