Chr*_*ris 23 core-data objective-c ios swift
我的核心数据模型的描述:
以下是我获取问题的代码:
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
Run Code Online (Sandbox Code Playgroud)
即使我有项目对象的所有问题,我更喜欢使用获取结果控制器获取问题,因此它们将始终更新,我喜欢与表的集成.在使用FRC显示项目之前,我也喜欢导航控制器屏幕中的那个.
正如您在代码中看到的那样,问题按名称参数排序.
但是我希望它们按照我将它们保存在项目的NSMutableOrderedSet中的顺序进行排序.
AFAIK当它用于核心数据时,我不能将NSSortDescriptor与比较器/选择器一起使用.
你知道怎么做吗?提前致谢.
如果您使用关系键路径(在您的情况下parentProject
),它将根据有序集进行排序。所以你可以使用
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "parentProject.name", ascending: true),NSSortDescriptor(key: "parentProject", ascending: true)]
Run Code Online (Sandbox Code Playgroud)
这将首先按项目对它们进行排序,然后在每个项目组内将按照与关系中的有序集相同的顺序进行排序。您也可以选择使用 来将每个问题的项目放在不同的部分中sectionNameKeyPath
。
如果您首先不使用parentProject.name
(或类似的东西parentProject.lastUpdated
),那么它们只会根据orderedSet的顺序进行排序。换句话说,这将是所有第一期,然后是所有第二期,依此类推。这可能不是您想要的。