我正在开发一个iPad应用程序,它存储有关在tableview中显示的位置的详细信息。用户可以通过全部(单个部分按字母顺序排序),区域明智(每个区域作为部分)和明智的类型对位置进行排序(每种类型为部分)。我为每个使用单独的NSFetchedResultController,因为初始化时必须给出'sectionNameKeyPath'。 我现在有两个问题。花了一周多的时间搜索,但我找到的解决方案产生了更多相关问题。
1)对于任何更新(例如:将位置设置为收藏),提供NSFetchedResultsChangeDelete而不是NSFetchedResultsChangeUpdate。
2)类型的tableview排序无法有效地使用FetchedResultController与当前的Entity设计。当前设计使用实体位置,类型和区域。地区的位置是一对多的关系。但是,位置到类型是两个方向上的多对多关系。 [我试图上传实体设计图片,但我的声誉不允许。]
答案 0 :(得分:0)
不太确定但是,CoreData在更改通知方面有一些缺陷(这是一个很棒的独家功能)但是我发现NSFetchedResultsChangeDelete并不一定意味着一个对象已经从数据库中删除了,它表示该对象在获取的对象上不再可用,因为它已被删除或不再适合当前谓词(条件)。你应该检查一下。