gpt4 book ai didi

ios - 基于有序的对多关系对描述符进行排序

转载 作者:IT王子 更新时间:2023-10-29 05:10:23 24 4
gpt4 key购买 nike

我的核心数据模型的描述:

  • 项目和问题实体
  • 项目与 Issues 具有有序的一对多关系
  • Issue 与名为 parentProject 的项目具有一对一关系

这是我获取问题的代码:

let fetchRequest = NSFetchRequest(entityName: "Issue")
fetchRequest.predicate = NSPredicate(format: "parentProject CONTAINS[cd] %@", argumentArray: [project])
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]

let frc = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: dataManager.context,
sectionNameKeyPath: nil,
cacheName: nil)

return arc

尽管我有来自项目对象的所有问题,但我更喜欢使用获取的结果 Controller 获取问题,因此它们将始终更新并且我喜欢与表的集成。在使用 FRC 显示项目之前,我也喜欢在导航 Controller 屏幕中这样做。

如您在代码中所见,问题按名称参数排序。

但是我希望它们按照我在项目的 NSMutableOrderedSet 中保存的顺序进行排序。

据我所知,当它用于核心数据时,我不能将 NSSortDescriptor 与比较器/选择器一起使用。

你知道怎么做吗?提前致谢。

最佳答案

如果您使用关系键路径(在您的例子中为 parentProject),它将根据有序集进行排序。所以你可以使用

fetchRequest.sortDescriptors = [NSSortDescriptor(key: "parentProject.name", ascending: true),NSSortDescriptor(key: "parentProject", ascending: true)]

这将首先按项目对它们进行排序,然后在每个项目组内,它将按照与关系中的有序集相同的顺序进行排序。您可以选择使用 sectionNameKeyPath 将每个问题的项目放在不同的部分。

如果您不首先使用 parentProject.name(或类似的东西 - 例如 parentProject.lastUpdated),那么它们只会根据 orderedSet 的顺序进行排序.换句话说,它将是所有第一期,然后是所有第二期等等。这可能不是您想要的。

关于ios - 基于有序的对多关系对描述符进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35222457/

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