核心数据 - 使用keypath和Object ID获取对象

时间:2017-10-09 10:29:09

标签: swift macos cocoa core-data

我想从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)

1 个答案:

答案 0 :(得分:0)

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

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