我想从核心数据中获取所有项目,但从最新到最旧排序。我的实体“骰子”具有日期类型的属性“时间戳”。
这是我保存和获取的方式:
class func saveResults(_ withResults: Int) -> Bool {
let context = getContext()
let entity = NSEntityDescription.entity(forEntityName: "Dice", in: context)
let manageObject = NSManagedObject(entity: entity!, insertInto: context)
let date = Date()
manageObject.setValue(withResults, forKey: "result")
manageObject.setValue(date, forKey: "timestamp")
do {
try context.save()
return true
} catch {
return false
}
}
class func fetchObject() -> [Dice]? {
let context = getContext()
var dices:[Dice]? = nil
do {
dices = try context.fetch(Dice.fetchRequest())
return dices
} catch {
return dices
}
}
有谁知道如何排序。所有解决方案都令人困惑,并显示出从旧到新的排序。
最佳答案
您需要指定一个适当的排序描述符。
我建议让函数throw
并交出错误。
class func fetchObject() throws -> [Dice] {
let context = getContext()
let fetchRequest : NSFetchRequest<Dice> = Dice.fetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
return try context.fetch(fetchRequest)
}
注意:fetch
操作返回 [Dice]
。不需要类型转换。
关于swift - 从最后一项获取核心数据 ManageObject 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019780/