按Swift CoreData中的键值排序

时间:2017-09-22 12:50:54

标签: ios swift sorting core-data

如何按字段值对CoreData查询进行排序?

例如: 我有字段"类型"的行。我希望首先按type = "car",然后按type = "bike",然后按type = "truck"进行结果排序。 类似的东西:

request.sortDescriptors = [NSSortDescriptor(key: "type=car,type=bike,type=truck", ascending: true)]

是否可以在Swift的CoreData中使用?感谢

P.S。 Swift版本> = 3

2 个答案:

答案 0 :(得分:0)

我认为NSSortDescriptor一次只能用于单个密钥,但我认为您可以通过循环执行类似的操作。

keys = ["car", "bike", "truck"]
var descriptors = []

for key in keys {
    let descriptor = NSSortDescriptor(key: key, ascending: true)
    descriptors.append(descriptor)
}

request.sortDescriptors = descriptors

答案 1 :(得分:0)

您只能使用NSSortDescriptor按一个键排序。因此,您需要使用一组NSSortDiscriptor来实现您想要做的事情。

但是,您似乎并不了解核心数据模型中字段排序的基本原理。

您只能按键type排序。不是" car" " bike" " truck"

所以你可以在type上进行字母排序,或者你可以创建一个自定义排序描述符来确定每个键值的优先级,然后按照你喜欢的方式对键进行排序

NSSortDescriptor.init(key: "type", ascending: true) { (lhs, rhs) -> ComparisonResult in
    /* calculation for your custom sort order */
}