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:正如另一个问题中提到的,考虑将模型中的title
和name
声明为非可选以去掉感叹号
【讨论】:
以上是关于swift 3 - 核心数据关系 - 获取数据的主要内容,如果未能解决你的问题,请参考以下文章