gpt4 book ai didi

ios - 单个表和核心数据实体设计的多个 NSFetchedResultsController

转载 作者:行者123 更新时间:2023-11-28 17:37:43 25 4
gpt4 key购买 nike

我正在开发一个 iPad 应用程序,它存储有关显示在 TableView 中的位置的详细信息。用户将能够按所有(按字母顺序排列的单个部分)、区域明智(每个区域作为部分)和类型明智对位置进行排序(每种类型作为部分)。我为每个使用单独的 NSFetchedResultController,因为在初始化时必须给出“sectionNameKeyPath”。我现在有两个问题。花了超过 1 周的时间进行搜索,但我发现的解决方案产生了更多相关问题。

1 ) 对于任何更新(例如:将位置设置为收藏夹)给出 NSFetchedResultsChangeDelete 而不是 NSFetchedResultsChangeUpdate。

  • 许多论坛说如果我们使用多个 fetchedResultController 是一个已知的错误
  • 我唯一可以避免的方法是不使用委托(delegate)方法并为每次更改重新获取。所以只缺少 tableview 动画。
  • 并非所有更新都会给委托(delegate)回电。我走的路是正确的还是有更好的方法可以使用单个 FetchedResultController?

2) Types 的 TableView 排序无法在当前的实体设计中有效地使用 FetchedResultController。当前设计使用实体 Location、Types 和 Region。 Location 到 Region 是一对多的关系。但是 Location-to-Types 在两个方向上都是多对多关系。 [我尝试上传实体设计图片,但我的声誉不允许这样做。]

  • TypesLocation 的关系在两个方向上都是多对多的。所以不能给 sectionNameKeyPath 因为类型是 Location 实体中的一个集合。所以我从 Types 实体中获取并从中获取位置数组(集)。
  • 因此 numberOfRows 可以从集合中计算出来。但它不是有序的。所以我使用比较器对其进行排序。我不确定这是正确的方法,所以我请大家对这个实体设计提出宝贵的建议。

最佳答案

不太确定,但 CoreData 在更改通知方面存在一些缺陷(这是一个很棒的独有功能),但我发现 NSFetchedResultsChangeDelete 并不一定意味着对象已从数据库中删除,它意味着该对象在获取的对象上不再可用,因为它已被删除或不再符合当前谓词(条件)。你应该检查一下。

关于ios - 单个表和核心数据实体设计的多个 NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com