Core Data有内置的缓存机制,并自动将其用于对象获取和故障相关操作,但我找不到任何关于修改此默认缓存行为的文档或文章。有什么方法可以增加或减少核心数据的默认缓存吗?我正在考虑制作一种NSManagedObject
容器,以减少从持久存储加载数据的开销,但不确定这是否是个好主意。
据我所知,CoreData没有公开任何通用的API来控制其缓存行为
您可以使用以下命令控制给定上下文的对象图的大小:
[context refreshObject:<obj> mergeChanges:NO];
或者完全重新设置上下文:
[context reset];
请参阅此处了解更多信息
这也可能令人感兴趣
您计划构建的容器听起来像NSPersistentStoreCoordinator
,它为对象或给定NSManagedObjectContext
中的注册对象保留缓存/快照
在我看来,没有理由为CoreData"滚动自己的"缓存,因为这正是使用该框架免费获得的
您的容器必须保留由上下文(上下文之间不能共享对象)和对象ID键控的对象,因此效果与调用[context objectRegisteredForID:<objectID>];
或访问上下文当前现有对象的其他方法相同
如果需要在上下文之间传输瞬态属性,并且重新计算这些属性或从头开始获取其值的成本很高,则需要容器