Core Data具有内置缓存机制,并自动将其用于对象提取和与错误相关的操作,但我找不到任何有关修改此默认缓存行为的文档或文章。
有没有办法增加或减少Core Data的默认缓存?
我正在考虑制作一种NSManagedObject
容器,以减少从持久存储中加载数据的开销,但不确定这是不是一个好主意。
答案 0 :(得分:1)
据我所知,CoreData没有公开任何通用API来控制其缓存行为
您可以使用以下方法控制给定上下文的对象图的大小:
[context refreshObject:<obj> mergeChanges:NO];
或完全重置上下文:
[context reset];
您计划构建的容器听起来像NSPersistentStoreCoordinator
,它是保留对象的缓存/快照或给定NSManagedObjectContext
中的已注册对象的容器。
在我看来,没有理由为CoreData“推出自己的”缓存,因为这正是您使用框架免费获得的。
您的容器必须保持上下文键入的对象(对象不能在上下文之间共享)和对象ID,因此效果将与调用[context objectRegisteredForID:<objectID>];
或访问上下文当前现有对象的其他方法相同。 BR />
在需要在上下文之间传输瞬态属性的情况下需要一个容器,重新计算它们或从头开始获取它们的代价很高。