如何调整核心数据默认缓存的行为或大小?



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

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

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

或者完全重新设置上下文:

[context reset];

请参阅此处了解更多信息
这也可能令人感兴趣

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

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

如果需要在上下文之间传输瞬态属性,并且重新计算这些属性或从头开始获取其值的成本很高,则需要容器

最新更新