如何在核心数据中的NSFetchedResultsController中使用缓存

时间:2019-05-16 08:52:06

标签: ios swift nsfetchedresultscontroller

我正在通过viewDidLoad方法执行此代码

fetchedResultCont = NSFetchedResultsController(fetchRequest: req,
 managedObjectContext: container.viewContext,
 sectionNameKeyPath: nil,
 cacheName: nil)

文档说,我们可以使用缓存来加快过程,但是没有实现。

有人可以告诉我,如何使用缓存代替缓存名称中的nil来加快过程吗?

1 个答案:

答案 0 :(得分:0)

您只需指定一个字符串即可用作缓存目录的名称。

fetchedResultCont = NSFetchedResultsController(fetchRequest: req,
     managedObjectContext: container.viewContext,
     sectionNameKeyPath: "SectionKey",
     cacheName: "MyCache")

但是,由于您没有在获取请求中使用部分,因此缓存不会使您受益:

documentation

  

接收方应使用的缓存文件的名称。传递nil以防止缓存。

     

预先计算的节信息以该名称缓存到私有目录中。如果Core Data找到使用此名称存储的缓存,则将检查它是否与fetchRequest匹配。如果是这样,将直接加载缓存-避免了计算节和索引信息的开销。如果缓存的信息与请求不匹配,则会在获取数据时删除并重新计算缓存。