ios - 如何在 Core Data 的 NSFetchedResultsController 中使用缓存
问题描述
我正在我的viewDidLoad
方法中执行此代码
fetchedResultCont = NSFetchedResultsController(fetchRequest: req,
managedObjectContext: container.viewContext,
sectionNameKeyPath: nil,
cacheName: nil)
文档说我们可以使用缓存来加快进程,但没有实现。
谁能告诉我,如何在缓存名称中使用缓存代替 nil 来加快处理速度?
解决方案
您只需指定将用作缓存目录名称的字符串。
fetchedResultCont = NSFetchedResultsController(fetchRequest: req,
managedObjectContext: container.viewContext,
sectionNameKeyPath: "SectionKey",
cacheName: "MyCache")
但是,由于您没有在 fetch 请求中使用部分,因此缓存不会使您受益:
从文档
接收方应使用的缓存文件的名称。传递 nil 以防止缓存。
预先计算的部分信息被缓存到此名称下的私有目录中。如果 Core Data 找到一个使用这个名字存储的缓存,它会检查它是否匹配 fetchRequest。如果是,则直接加载缓存——这避免了计算节和索引信息的开销。如果缓存的信息与请求不匹配,则缓存被删除并在获取发生时重新计算。
推荐阅读
- python - 当我尝试将我的 Django 项目部署到 Heroku 时,它没有检测到 buildpack。有人可以帮我吗?
- javascript - 如何提取2 个标签之间的内容并将该内容放在单独的数组中
- python - Python循环中的内存错误
- php - 递归不会继续下一项
- javascript - 如何使用 ID 或 Class 在一个 amp HTML 文档的不同位置调用一个 Javascript 函数?
- python - 为什么在 Django 中运行 PostgreSQL UPDATE 时出现错误“不是在字符串格式化期间转换的所有参数”?
- python - 创建 float 的子类,以防所有算术运算都返回同一类的对象(不是 float)
- javascript - 在 React 中将子表单的数据传递给父(应用程序)
- javascript - 我必须在哪里使用等待?
- swift - SwiftUI 中应用图标上的通知图标管理