我做了一些搜索,并且所有示例都是obj-c或者根本不适用于xcode 7 beta 6.
我的xcode模型设置如下:
所以我有两个实体,一个叫Person,一个叫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',原因:'不可接受的值类型 多对多的关系:财产="宠物&#34 ;;期望的类型= NSSet;特定 type = NSManagedObject;值= (实体:Pet; id:0x7fa93bc2f4a0
答案 0 :(得分:0)
在一对多关系中,设置一对一关系会更方便。要做到这一点,可以采用相反的方式,但更复杂,因为您必须将一个对象添加到现有对象的可能cellForRowAtIndexPath:
。
NSSet
(使用正确的pet.person = person
子类。)
答案 1 :(得分:0)
原来我需要创建类文件。一旦我创建它们,一切都开始正常工作。