swift3-核心数据关系-取数据

swift 3 - core data relationship - fetch data

我使用核心数据和 swift 3 for macOS。

但是我怎样才能知道哪个人有哪本书呢?

我上一篇 post 中有更多详细信息:

非常感谢:)

let appdelegate = NSApplication.shared().delegate as! AppDelegate
let context = appdelegate.persistentContainer.viewContext
var books = [Book]()
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Book")
do {
   books = try context.fetch(request) as! [Book]
} catch { }

for book in books {
   print("Title: \(book.title!)")
   print("Person: \(book.person!.name!)")
}

根据您的模型,一个人可以拥有不止一本书,因此您需要两个重复循环。

请注意避免显式类型转换的通用提取请求,并将与成功提取相关的代码 放在 do 范围内。

let appdelegate = NSApplication.shared().delegate as! AppDelegate
let context = appdelegate.persistentContainer.viewContext
var people = [Person]()
let request = NSFetchRequest<Person>(entityName: "Person")
do {
   people = try context.fetch(request)
   for person in people {
       print("Person: ", person.name!)
       for book in person.books {
            print("Title: ", book.title!)   
       }           
   }
}

catch { print(error) }

PS:如另一个问题中所述,考虑将模型中的 titlename 声明为非可选的,以去除感叹号