swift - 核心数据 - 使用键路径和对象 ID 获取对象

标签 swift macos cocoa 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)

最佳答案

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

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

关于swift - 核心数据 - 使用键路径和对象 ID 获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46644285/

相关文章:

cocoa - 将CoreData缓存在内存中

swift - 处理 URLSession 超时

swift - 如何在 mac OS 上使用 CNContactViewController 编辑联系人

macos - 如何使用 Homebrew 在 macOS Mojave(10.14) 上安装 Valgrind?

macos - 从技术上讲,是否可以开发一个类似于 Snow Leopard 上的 Exposé & Spaces 的应用程序?

objective-c - 在运行时更改 Cocoa 应用程序图标、标题和菜单标签

php - swift php数组到swift json

ios - 使用 CIDetectorTypeFace 进行人脸识别时出错

regex - 为匹配中的每一行添加前缀的正则表达式

macos - ASP.NET vnext 重写 Controller 中设置的状态代码。这是一个错误吗?