Ios 按数组对CoreData NSFetchResult排序

Ios 按数组对CoreData NSFetchResult排序,ios,swift,core-data,Ios,Swift,Core Data,我有一个CoreData数据集,如: A | B ----- 1 | c 2 | a 3 | b 我想使用[a,c,b]这样的数组对其进行排序,以获得: A | B ----- 2 | a 1 | c 3 | b 是否有一个内置的Swift/Foundation/CoreData函数来实现这一点?由于您还没有提供核心数据模型的定义,我将给出解决方案,假设一个类型包含问题中所述的数据 假设类型的定义是这样的 struct Root { let id: Int let name:

我有一个CoreData数据集,如:

A | B
-----
1 | c
2 | a
3 | b
我想使用[a,c,b]这样的数组对其进行排序,以获得:

A | B
-----
2 | a
1 | c
3 | b

是否有一个内置的Swift/Foundation/CoreData函数来实现这一点?

由于您还没有提供核心数据模型的定义,我将给出解决方案,假设一个类型包含问题中所述的数据

假设类型的定义是这样的

struct Root {
    let id: Int
    let name: String

    init(_ id: Int, _ name: String) {
        self.id = id
        self.name = name
    }
}
当然,您将使用核心数据模型而不是结构根

现在,结果的数组是这样的

let results = [Root(1, "c"), Root(2, "a"), Root(3, "b")]
以及必须根据其对结果进行排序的引用数组

let reference = ["a", "c", "b"]
使用排序的\:和第一个索引\:根据引用对结果进行排序,即


添加用于核心数据的代码/模型。
let sortedResults = results.sorted {
    if let index1 = reference.firstIndex(of: $0.name), let index2 = reference.firstIndex(of: $1.name) {
        return index1 < index2
    }
    return false
}
print(sortedResults) //[Root(id: 2, name: "a"), Root(id: 1, name: "c"), Root(id: 3, name: "b")]