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

Posted

技术标签:

【中文标题】swift 3 - 核心数据关系 - 获取数据【英文标题】:swift 3 - core data relationship - fetch data 【发布时间】:2017-05-09 10:12:54 【问题描述】:

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

我必须实体:人物和书籍 我可以创造一个人 我可以创建一本书来分配给一个人 而且我知道如何获取信息,哪本书分配给了最后带有此代码的人

但是我怎样才能得到谁拥有哪本书的信息呢?

更多细节在我的上一篇文章中:swift 3 - create entry with relationship

非常感谢:)

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!)")

【问题讨论】:

【参考方案1】:

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

请注意避免显式类型转换的通用提取请求,并将与成功提取相关的代码放入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 声明为非可选以去掉感叹号

【讨论】:

以上是关于swift 3 - 核心数据关系 - 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

iOS (Swift):使用关系获取核心数据

核心数据 Swift 3 关系

如何在 IOS Swift 中获取核心数据中的多对多关系?

一对多关系核心数据获取数据

一对多关系核心数据获取数据

Swift 3 核心数据获取问题