繁体   English   中英

缓存CoreData存储在内存中

[英]Cache CoreData store in memory

我有一个CoreData存储包含两种类型的实体 - 由SQLite存储支持的FooBar 可以预期Foo具有相对较少的实例(~1000),所有这些实例都经常被访问和遍历。 另一方面, Bar可以达到数百万,并且Bar每个实例都是相对不经常访问的。

我的问题是,CoreData是否已默认优化此类非对称访问? 如果没有,有没有办法告诉coreData始终在内存中缓存Foo所有实例?

只有在访问实例后,实例才会缓存到内存中。 强制CoreData缓存所有Foo实例可能不是一个好主意,具体取决于最终的内存量。 CoreData非常聪明地管理内存。

话虽这么说,你可以做的是有两个独立的NSManagedObjectContexts ,一个用于Foo ,另一个用于Bar 您可以在初始化MOC时预先获取所有Foo实例,并且它们将被MOC保留,直到您在其上调用reset (您可能希望在Bar MOC上更频繁地执行此操作)。

您不需要两个上下文和所有导致的麻烦。 你可以做的是用NSFetchRequest将所有Foo对象提取到内存中,并且它会给你你想要的东西。

确保获取请求的includesPropertyValues设置为YES (默认值)以将所有数据都拉入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM