我的核心数据子类之一有一个 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/