[英]Cache CoreData store in memory
我有一个CoreData存储包含两种类型的实体 - 由SQLite存储支持的Foo
和Bar
。 可以预期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.