核心数据懒惰地加载对象,它应该尽快引入任何对象,只要您尝试引用它们。不过,我遇到了这个方案的一些问题。核心数据延迟加载问题
目的C 2.0以上的关系(集)可能会失败(因为在一组中的对象尚未装载)和awakeFromFetch不叫对象快速枚举直到由核心数据管理的对象的成员被触摸。
举例来说,如果我有NSManagedObject的子类,如关系:
@property (retain) NSSet* clips;
立即获取该对象的实例后,如果我尝试使用快速列举像这样的:
for (PClip* clip in self.clips) {
// do something with the clip
}
的循环体永远不会执行。在调试器中可以看到,该组片段(在运行时_NSFaultingMutableSet的实例)最初是空的。
或者说我有一个是从持久状态得到的剪辑对象的非持久成员:
@property (retain) NSString* filename
我与使用awakeFromFetch方法同步,这一点,但awakeFromFetch不叫,直到一些持久成员物体的首先被调用,因此,如果一些代码试图加载对象之前访问此非持久值,它将尚未被定义(即会无)。
在获取请求上使用setReturnsObjectsAsFaults:方法似乎没有帮助。它不会出现强迫取所有连接到被提取对象物体的树。
确保对象在使用之前加载的最佳方法是什么?为什么快速枚举无法使对象集加载?
今后请花时间适当地格式化问题中的代码(使用“{}”编辑器控件)。 :-) – 2011-02-10 22:22:44