/ / swift2 основні дані і робота з відносинами - ios, xcode, swift, core-data

swift2 основних даних і роботи з відносинами - ios, xcode, swift, core-data

Я зробив деякі пошуки навколо цього, і всі приклади або 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

Виявилося, мені потрібно створити файли класів. Як тільки я їх створив, все почало працювати належним чином.