【问题标题】:Core Data - fetch object with keypath and Object ID核心数据 - 使用键路径和对象 ID 获取对象
【发布时间】:2018-03-20 12:51:01
【问题描述】:

我想从 Core Data 中获取我的数据,其中的书籍分配给了“Max”这个人。为此,我有以下代码:

  let request = NSFetchRequest<Book>(entityName: "Book")
    request.predicate = NSPredicate(format: "person.firstName = %@", "Max")
    do {
       let books = try context.fetch(request)
       for x in 0 ..< books.count {
          print(books[x].name)
       }
    } catch { }

但现在我想获取将书籍分配给对象 ID 为“xyz”的人的数据。

我试过了,但它不起作用:

request.predicate = NSPredicate(format: "person.self = %@", myPersonObjectID)

【问题讨论】:

  • 您的问题标题与问题正文不匹配(根本与 排序 无关)。
  • 我更新了 :)

标签: swift macos cocoa core-data


【解决方案1】:

您应该从对象 ID 中获取带有 existingObject 的对象并在谓词中使用它。

if let myPerson = context.existingObject(with: myPersonObjectID) {
    request.predicate = NSPredicate(format: "person = %@", myPerson)
}

【讨论】:

  • 通常最好使用existingObject(with:),如果没有具有该ID的对象,则返回nil。
  • @TomHarrington 谢谢!更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2013-01-01
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多