Macos swift 3-核心数据关系-获取数据

Macos swift 3-核心数据关系-获取数据,macos,core-data,swift3,xcode8,Macos,Core Data,Swift3,Xcode8,我使用macOS的核心数据和swift 3 我必须去实体:人和书 我可以创造一个人 我可以创建一本书,它将分配给一个人 我知道怎样才能得到信息,哪本书被分配给哪一个人,最后用这个代码 但是我怎样才能得到谁拥有哪本书的信息呢 我在上一篇文章中提供了更多详细信息: 非常感谢:) 让appdelegate=NSApplication.shared()。委托为!AppDelegate 让上下文=appdelegate.persistentContainer.viewContext var books

我使用macOS的核心数据和swift 3

  • 我必须去实体:人和书
  • 我可以创造一个人
  • 我可以创建一本书,它将分配给一个人
  • 我知道怎样才能得到信息,哪本书被分配给哪一个人,最后用这个代码
但是我怎样才能得到谁拥有哪本书的信息呢

我在上一篇文章中提供了更多详细信息:

非常感谢:)

让appdelegate=NSApplication.shared()。委托为!AppDelegate
让上下文=appdelegate.persistentContainer.viewContext
var books=[Book]()
let request=NSFetchRequest(entityName:“Book”)
做{
books=尝试上下文。获取(请求)为![Book]
}捕获{}
书中有书{
打印(“标题:\(book.Title!)”)
打印(“个人:\(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) }
让appdelegate=NSApplication.shared()。委托为!AppDelegate
让上下文=appdelegate.persistentContainer.viewContext
var people=[Person]()
let request=NSFetchRequest(entityName:“Person”)
做{
people=try context.fetch(请求)
为人处事{
打印(“个人:”,个人名称!)
我要亲自去看书{
打印(“标题:”,书。标题!)
}           
}
}
捕获{打印(错误)}

PS:如另一个问题中所提到的,在模型中声明<代码>标题>代码>代码> >名称>代码,以消除感叹号

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) }