我一直在尝试获取核心数据中多对多关系的关系值 . 我有两个实体Person和Address . 人可以有多个地址,它有两个属性Name&age . 虽然地址只有一个属性City .
这是我试图设置值的方式
let managedContext = (UIApplication.sharedApplication().delegate as? AppDelegate)!.managedObjectContext
let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedContext)
let addEntity = NSEntityDescription.entityForName("Address", inManagedObjectContext: managedContext)
let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
let address = NSManagedObject(entity: addEntity!, insertIntoManagedObjectContext: managedContext)
person.setValue(name, forKey: "name")
person.setValue(age, forKey: "age")
address.setValue(city, forKey: "city")
person.setValue(NSSet(object: address), forKey: "addresses")
do {
try person.managedObjectContext?.save()
people.append(person)
} catch let error as NSError {
print("Could not save \(error)")
}
这就是我的核心数据属性的设置方式
extension Person {
@NSManaged var age: NSNumber?
@NSManaged var name: String?
@NSManaged var addresses: Address?
}
extension Address {
@NSManaged var city: String?
@NSManaged var persons: Person?
}
然后在表视图中获取数据我正在尝试做这样的事情
let person = people[indexPath.row]
let address = person.mutableSetValueForKey("addresses")
print(address.allObjects.first as! Address)
印刷品的 Value 是这样的
<Address: 0x7f9481f1e290> (entity: Address; id: 0xd000000000040002 <x-coredata://7A4230B9-0EF0-44D5-BBDD-D8E9A3E38F59/Address/p1> ; data: <fault>)
任何帮助,将不胜感激 . 提前致谢 .
2 回答
检查它是否为关系(非属性) . 并且很多 . 像这样:
之后,它会是这样的:
您展示的模型不是您所声明的模型 . 您的模型显示错误命名的1:1关系 . 根据你的代码,你应该打赌崩溃 .
我建议您查看数据模型并重新生成代码 .