Я зробив деякі пошуки навколо цього, і всі приклади або obj-c або просто не працює в xcode 7 beta 6.
Мої моделі xcode налаштовані так:
Таким чином, у мене є дві сутності, одна з яких називається "Людина і одна"називається Пет. Людина має ім'я. ПЕТ має назву і тип (собака, кішка). Людина має відношення до багатьох тварин, у яких Pet має відношення до особи.
Ось мій простий код:
import UIKit
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let person = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: context)
let pet = NSEntityDescription.insertNewObjectForEntityForName("Pet", inManagedObjectContext: context)
person.setValue("Bill", forKey: "name")
pet.setValue("Ruff", forKey: "name")
pet.setValue("Dog", forKey: "type")
person.setValue(pet, forKey: "pet")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Коли я запускаю його, я отримую таку помилку:
Припинення програми через непошкодженостівиняток "NSInvalidArgumentException", причина: "Неприйнятний тип значення для." to-many відносини: властивість = "домашня тварина"; бажаний тип = NSSet; дано type = NSManagedObject; value = (сутність: Pet; id: 0x7fa93bc2f4a0
Відповіді:
0 для відповіді № 1У відносинах «один-до-багатьох» це набагато більшезручно встановлювати відношення "один до одного". Зробити це навпаки можливо, але більш складно, тому що потрібно додати один об'єкт до можливого NSSet
існуючих об'єктів.
pet.person = person
(Використовуючи власне NSManagedObject
підкласи.)
0 для відповіді № 2
Виявилося, мені потрібно створити файли класів. Як тільки я їх створив, все почало працювати належним чином.