objective-c - 核心数据、iVar 和类别

标签 objective-c ios cocoa core-data categories

我的核心数据子类之一有一个 NSSet items。通常(但不总是,所以没有 NSOrderedSet)代替检索有序的 NSArray 很有用,所以我将 orderedItems 添加到类中,它对它们进行排序。

然后我遇到了性能问题,因此决定尝试缓存 orderedItems。我的计划是在类中使用一个 iVar,_cachedOrderedItems,如果它不为 null,我将返回它。

障碍来自于我对类别的使用。我阅读了一些关于将我所有的自定义代码放在一个类别中的好建议,这样我就可以在必要时重新生成核心数据类,而不会丢失我所有的自定义。其中一项自定义是 orderedItems 方法。

看来我无法在类别本身中声明 iVar。如果我尝试将它放在核心数据类中,我将无法在类别中访问它。

我需要将自定义代码移回核心数据类吗?还是我遗漏了什么?

我也听说过 Mogenerator,如果有帮助,我会考虑学习使用它。

最佳答案

您可以使用 associative references在您无法修改原始类(class)(包括类别)时随时将 ivars 添加到类(class)中。有关详细示例,请参阅 Faking instance variables in Objective-C categories with Associative References .

关于objective-c - 核心数据、iVar 和类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999778/

相关文章:

ios - 强制对象存活直到 block 被执行的正确方法

ios - Swift - 来自 CIImage QR 代码的图像数据/如何呈现 CIFilter 输出

ios - 如何在 App 项目中使用 Cocoa Touch Frameworks

ios - 如何回滚临时上下文的更改?

ios - 如何从 Swift 中的闭包返回值?

javascript - React Native - 如何更改 onPress View 的样式和图像

ios - UITextField强制重绘

ios 7 drawViewHierarchyInRect :afterScreenUpdates: black screen on iPad only

ios - SLComposeViewController iOS 8.3 中的 setInitialText 方法不在 Facebook 工作表中显示文本

ios - 在 ios 中检测 sim 卡检测的可能方法?