如何调整Core Data默认缓存的行为或大小?

时间:2013-11-26 06:05:38

标签: ios macos core-data

Core Data具有内置缓存机制,并自动将其用于对象提取和与错误相关的操作,但我找不到任何有关修改此默认缓存行为的文档或文章。 有没有办法增加或减少Core Data的默认缓存? 我正在考虑制作一种NSManagedObject容器,以减少从持久存储中加载数据的开销,但不确定这是不是一个好主意。

1 个答案:

答案 0 :(得分:1)

据我所知,CoreData没有公开任何通用API来控制其缓存行为 您可以使用以下方法控制给定上下文的对象图的大小:

[context refreshObject:<obj> mergeChanges:NO];

或完全重置上下文:

[context reset];

有关详细信息,请参阅here This也可能是有意义的。

您计划构建的容器听起来像NSPersistentStoreCoordinator,它是保留对象的缓存/快照或给定NSManagedObjectContext中的已注册对象的容器。

在我看来,没有理由为CoreData“推出自己的”缓存,因为这正是您使用框架免费获得的。
您的容器必须保持上下文键入的对象(对象不能在上下文之间共享)和对象ID,因此效果将与调用[context objectRegisteredForID:<objectID>];或访问上下文当前现有对象的其他方法相同。 BR />

在需要在上下文之间传输瞬态属性的情况下需要一个容器,重新计算它们或从头开始获取它们的代价很高。