什么是CoreData故障?

Adv*_*ith 10 macos cocoa core-data ios

谁能解释一下coredata断层是什么意思?我明白这是一种减少记忆的机制.但我的问题是,如果我们尝试使用故障对象时,是否需要调用任何刷新方法或者CoreData会为我们选择值?如果CoreData为我们处理它,如果从实际持久存储中删除故障对象并且我们尝试通过故障对象访问它会发生什么?它会抛出任何异常吗?

Dhr*_*oel 20

在核心数据中,错误是占位符或"未实现的对象".它们是引用其他NSManagedObjects的小对象,只有在需要时才会将其提取到内存中.此错误机制旨在增强性能并减少内存使用.

一般来说,断层机制是透明的; 当您从NSManagedObjectContext(MOC)中检索对象时,您无法判断(在正常使用过程中)它是故障还是已实现的对象.在大多数情况下,当需要这样做时,例如在访问对象的属性时,核心数据框架将自动将故障转换为实现的对象("触发").如果您需要自己触发故障,可以通过使用nil参数调用其willAccessValueForKey:方法来实现.

  • "当您从NSManagedObjectContext(MOC)中检索对象时,您无法判断(在正常使用过程中)是故障还是已实现的对象" - 是的,我们可以使用`-isFault` (5认同)

小智 5

来自 Dhruv 的精彩回答!在回答您的最后一个问题时,如果您尝试访问首先出现故障然后删除的托管对象,您将看到 NSObjectInaccessibleException 和消息“核心数据无法满足故障”