【问题标题】:how to use cache in NSFetchedResultsController in Core Data如何在 Core Data 的 NSFetchedResultsController 中使用缓存
【发布时间】:2023-03-05 16:40:01
【问题描述】:

我在 viewDidLoad 方法中执行此代码

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

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

谁能告诉我如何在缓存名称中使用缓存代替 nil 来加快进程?

【问题讨论】:

    标签: ios swift nsfetchedresultscontroller


    【解决方案1】:

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

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

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

    来自documentation

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

    预计算的部分信息缓存到此名称下的私有目录中。如果 Core Data 找到一个使用这个名字存储的缓存,它会检查它是否匹配 fetchRequest。如果是,则直接加载缓存——这避免了计算节和索引信息的开销。如果缓存的信息与请求不匹配,则缓存被删除并在获取发生时重新计算。

    【讨论】:

    • 感谢您的回答,但实际上我并没有使用部分,因为我不知道如何添加缓存,如果我知道,我会使用部分
    • 如果我们有部分,您能否举例说明我们如何处理缓存
    • 好的。为缓存指定一个字符串,例如 ”MyCache” 和值决定您的部分的键的名称。
    猜你喜欢
    • 2012-05-13
    • 2012-03-31
    • 2019-04-08
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多