在更新引用的实体值时,NSFetchedResultsController不会更新sectionNameKeyPath

时间:2018-08-03 11:15:08

标签: swift uitableview caching core-data nsfetchedresultscontroller

我有一个看起来像这样的核心数据模型

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信息的更改,而不必每次都在运行时删除缓存,该怎么办?

0 个答案:

没有答案