gpt4 book ai didi

ios - Swift CoreData sortdescriptions 不起作用

转载 作者:行者123 更新时间:2023-11-29 02:12:22 24 4
gpt4 key购买 nike

我想从 coredata 中获取所有排序的数据,但它不起作用。这是我的实体:

class Kurzus: NSManagedObject {

@NSManaged var kurzuskod: String
@NSManaged var kurzusnev: String
@NSManaged var kredit: NSNumber
@NSManaged var felvett: NSNumber
@NSManaged var teljesitett: NSNumber
@NSManaged var jegy: NSNumber
}

这是我获取排序数据的函数:

func getSortedData(entity: String, keys: [String], ascend: [Bool]) -> [AnyObject] {
var request = NSFetchRequest(entityName: entity)
for i in 0..<keys.count {
let sd = NSSortDescriptor(key: keys[i], ascending: ascend[i])
request.sortDescriptors?.append(sd)

}
var results = context.executeFetchRequest(request, error: nil)!
return results
}

但是我得到一个未分类的数据...我尝试按“kredit”属性对数据进行排序:

println("=========================")
let res3 = dbHandler.getSortedData(entity, keys: ["kredit"], ascend: [true]) as [Kurzus]
for k in res3 {
println("Kurzuskód: \(k.kurzuskod) \nKurzusnev: \(k.kurzusnev)\nKredit: \(k.kredit)\nFelvett: \(k.felvett)\nTeljesitett: \(k.teljesitett)\nJegy: \(k.jegy)")
}

但是它没有排序,这有什么问题吗?

最佳答案

默认情况下,request.sortDescriptorsnil,所以可选的链接

request.sortDescriptors?.append(sd)

什么都不做。你必须先创建一个数组然后附加排序描述符:

let request = NSFetchRequest(entityName: entity)
request.sortDescriptors = [] // <-- Start with empty array!
for i in 0..<keys.count {
let sd = NSSortDescriptor(key: keys[i], ascending: ascend[i])
request.sortDescriptors!.append(sd)
}

这也可以使用 map() 更快地完成:

let request = NSFetchRequest(entityName: entity)
request.sortDescriptors = map(0 ..< keys.count) {
NSSortDescriptor(key: keys[$0], ascending: ascend[$0])
}

或使用 map() + Zip2(创建一个序列对来自给定的数组):

let request = NSFetchRequest(entityName: entity)
request.sortDescriptors = map(Zip2(keys, ascend)) {
NSSortDescriptor(key: $0, ascending: $1)
}

关于ios - Swift CoreData sortdescriptions 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29139857/

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