Swift Core Data 两个排序描述符
Posted
技术标签:
【中文标题】Swift Core Data 两个排序描述符【英文标题】:Swift Core Data two sort descriptors 【发布时间】:2020-04-05 21:48:08 【问题描述】:任何帮助都会很棒。 Core Data 使用“日期”作为截止日期和截止时间。值来自 Swift UI 选择器 (displayedComponents: .date) 和 (displayedComponents: .hourAndMinute)。排序不正确。
var fetchCategories = [Category]()
let request: NSFetchRequest<Category> = Category.fetchRequest()
let predicate = NSPredicate(format: "isComplete == 0")
let sortDueDate = NSSortDescriptor(key: "dueDate", ascending: true)
let sortDueTime = NSSortDescriptor(key: "dueTime", ascending: false)
let sortDescriptors = [sortDueDate, sortDueTime]
request.sortDescriptors = sortDescriptors
request.predicate = predicate
do
fetchCategories = try moc.fetch(request)
catch
print("Error fetching categories \(error.localizedDescription)")
return fetchCategories
【问题讨论】:
【参考方案1】:Core Data 中的Date
属性存储日期和时间。我猜dueTime
属性包含的日期晚于dueDate
日期,从而导致排序问题。
解决方案是将dueDate
存储为一个属性。此属性包含日期和时间,您可以在用户界面中单独修改。你也只需要一个SortDescriptor
。
【讨论】:
以上是关于Swift Core Data 两个排序描述符的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift Core Data 中对存储的数据模型提取进行排序