核心数据:保存后将对象转换为故障?

时间:2013-09-11 18:52:56

标签: ios objective-c core-data

在我的代码中,我对数千个对象进行了大量导入,并在每个对象后执行save

我是否需要在保存内存后将每个对象变为故障,或者Core Data会自动将其变为故障?不幸的是,我在Apple`s doc中找不到任何线索。

谢谢!

2 个答案:

答案 0 :(得分:2)

一个。您可以使用refreshObject:mergeChanges: (NSManagedObject)将对象变为故障。这将放弃对相关对象的强引用,以便可以释放它们。 (如果他们没有被另一个参考文章掌握。)

  

您可以将已实现的对象变为故障   refreshObject:mergeChanges:方法。如果您将merge作为mergeChanges传递给NO   参数,你必须确保该对象没有变化   关系。如果有,然后你保存上下文,你会   将引用完整性问题引入持久性存储。   (Link

B中。 Daniel G说,您可以使用-reset (NSManagedObjectContext)擦除所有对象。但这确实消灭了对象,引用可能会破坏。

℃。我认为,没有CD的承诺将所有保存的对象变成故障。 (未保存的对象不能变成故障。)但只需覆盖-didTurnIntoFault (NSManagedObject)即可查看CD的行为。

答案 1 :(得分:1)

我不确定你在问什么,但如果你的上下文中有很多对象,你总是可以使用方法 - [NSManagedObjectContext reset]来重置上下文并清除内存。如果在最近重置的上下文中有任何引用NSManagedObjects的对象,也不希望这样做。

我不确定您的应用程序的性质或为什么需要对数千个对象执行保存,您似乎应该考虑使用批处理来获取提取请求。这样核心数据将保证在任何给定时间只有指定数量的对象将存在于上下文中。

我希望这有帮助吗?