我在核心数据中有一对多的关系b/w对象.像A == >> B(很多对象)所以A与B对象有一对多的关系.我的问题是,当我获取A对象时,B对象是否也被加载到内存中?如果是,那么当它们被加载?当我访问关系?
在大多数情况下,它没有.这是一种称为故障核心数据的机制.当你要求一个尚未实现的对象(即加载到内存中)时,框架会负责实现场景背后的故障.
故障处理是透明的 - 您不必执行提取来实现故障.如果在某个阶段访问了故障对象的持久属性,则Core Data会自动检索该对象的数据并初始化该对象(有关不会导致错误触发的方法列表,请参阅NSManagedObject类参考).此过程通常称为触发故障.如果你向Department对象发送一条消息来获取它的名字,那么故障就会触发 - 在这种情况下,Core Data会为你执行一次获取来检索所有对象的属性.
因此在您的示例中,如果您加载A,Core Data将使B实例出错(即不将它们加载到内存中),当您实际尝试访问B时,它会实现故障(即加载到内存中).
相反,有时您在内存中加载了对象并希望"卸载"它们.这称为将物体变成故障.
您可以使用refreshObject:mergeChanges:方法将已实现的对象转换为错误.如果传递NO作为mergeChanges参数,则必须确保该对象的关系没有更改.如果存在,然后保存上下文,则会向持久性存储中引入参照完整性问题.
| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |