这是在Swift开发的iOS开发中将NSFetchedResultsController与核心数据结合使用的一种非常奇怪的情况。
首先, FetchedResultsController 仅包含未更改节的信息,但不包含任何已更改节的信息,尽管更改会导致 controllerDidChangeContent 方法调用 tableView.reloadData 方法,然后调用 numberOfSections 方法。
但是随后的手动调用例如在viewWillAppear中,FetchedResultsController的结果可正确显示更改后的部分信息以及其他未更改的部分信息。
换句话说,在后台上下文中通过cloudkit提取的在 sectionNameKeyPath 中引用的属性的更改已保存到viewContext,这又将其保存到持久性容器中。在此过程中,调用了 controllerDidChangeContent 并调用了tableView.reloadData。那时,在 numberOfSections 中,在fetchedResultsController.sections中未观察到任何已更改的节信息,该信息仅包含未更改节的信息。我已将该属性名称设置为与fetchedResultsController关联的获取请求中的第一排序描述符。
我真的找不到任何不合逻辑的线索;任何想法都欢迎。
答案 0 :(得分:0)
发现问题!!!感谢Michael回答NSFetchedResultsController calls didChangeObject delete instead of update
原因是我对数字值使用字符串插值的谓词。更改数字谓词的用法后,魔术发生了。感谢Stackoverflow社区!