如何进行 CoreData 排序
Posted
技术标签:
【中文标题】如何进行 CoreData 排序【英文标题】:How to make a CoreData sort 【发布时间】:2019-01-28 19:28:13 【问题描述】:我正在使用 CoreData 构建应用程序。我想按日期对我的 CoreData 数据进行排序。我已经尝试过了:
func getData()
let request = NSFetchRequest<Session>(entityName: "Session")
let sort = NSSortDescriptor(key: "date", ascending: false)
request.sortDescriptors = [sort]
do
sessions = try contains.viewContext.fetch(request)
print("Got \(sessions.count) sessions")
tableView.reloadData()
catch
print("Fetch failed")
但它显示以下错误:Use of unresolved identifier 'NSFetchRequest' by the request
。
【问题讨论】:
添加import CoreData
然后我得到一个新的失败“类型值'(UIFocusEnvironment)-> Bool'没有成员'viewContext'”
contains.viewContext
应该是核心数据堆栈的NSManagedObjectContext
实例
这是什么意思?抱歉,我是编程新手。
这取决于您的核心数据堆栈所在的位置。
【参考方案1】:
首先,您需要一个NSManagedContext
,它可能类似于:
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
当然还有一个用于返回的NSManagedObjects
的变量:
var sessions: [NSManagedObject] = []
那么你需要这样使用它:
func loadQuotes()
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Session")
let sort = NSSortDescriptor(key: "date", ascending: false)
fetchRequest.sortDescriptors = [sort]
do
sessions = try context.fetch(fetchRequest)
catch let error as NSError
print("Fetch failed")
【讨论】:
以上是关于如何进行 CoreData 排序的主要内容,如果未能解决你的问题,请参考以下文章
如何使用coredata从上到下对tableview项目进行排序
使用 NSSortDescriptor 按时间倒序对 CoreData 进行排序
在 Swift 中使用 NSPredicate 对 CoreData 结果进行排序