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:如另一个问题中所述,考虑将模型中的 title
和 name
声明为非可选的,以去除感叹号
我使用核心数据和 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:如另一个问题中所述,考虑将模型中的 title
和 name
声明为非可选的,以去除感叹号