【问题标题】:How to make a CoreData sort如何进行 CoreData 排序
【发布时间】: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 实例
  • 这是什么意思?抱歉,我是编程新手。
  • 这取决于您的核心数据堆栈所在的位置。

标签: swift core-data


【解决方案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")
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多