如何按字段值对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
答案 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 */
}