我有一个看起来像这样的核心数据模型
item entity
name: String
tagRef: relation to 1 tag entity
tag entity
tagName: String
itemRefs: relation to many item entities
创建FetchedResultsController:
let aFetchedResultsController =
NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: self.managedObjectContext,
sectionNameKeyPath: "tagRef.tagName",
cacheName: cacheName)
生成的UITableView
看起来像这样
HeaderName from tag 1
item.name 1
item.name 2
HeaderName from tag 2
item.name 3
item.name 4
标题名称来自
fetchedResultsController.sections[sectionNo].name
现在解决问题:
当我更新tag.tagName并保存上下文时,然后
fetchedResultsController.sections[sectionNo].name
仍显示旧值。即使我重新编译并重新启动我的应用程序。
tag.tagName即使在按预期方式重新启动后也具有新值。
似乎,fetchedResultsController缓存了我的商品的部分名称,并且从不更新缓存的值。
当我打电话
NSFetchedResultsController<Item>.deleteCache(withName: cacheName)
在启动时,标题将正确显示。
我的NSFetchedResultsController
尊重sectionNameKeyPath
信息的更改,而不必每次都在运行时删除缓存,该怎么办?