我创建了两个关系实体。在我移动到另一个 UIViewController
之后,我将名称保存到第一个实体的属性中,并将数组元素按顺序保存到第二个实体的属性中。我让我可以看到节省的结果。我看到每个元素都与第一个实体有关系。在我返回第一个 UITableViewController
并移动到第二个 UITableViewController
后,它显示属于第一个实体的名称属性的元素。我在这里得到一个错误。我只有数组的最后一个元素。其他元素与第一个实体没有关系。我怎样才能重新制作它?请以编程方式向我展示它。
let testArray = ["iMac", "Mac Pro", "MacBook Pro", "iPhone", "iPad"]
@IBAction func saveData(sender: UIBarButtonItem) {
for element in testArray {
let personEntity = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: managedObjectContext) as! Person
let carEntity = NSEntityDescription.insertNewObjectForEntityForName("Car", inManagedObjectContext: managedObjectContext) as! Car
let object: AnyObject? = fetchedResultsController.fetchedObjects!.first
let fixPersonEntity = object as! Person
carEntity.personCar = element
carEntity.personRelationship = fixPersonEntity
println(carEntity)
fixPersonEntity.setValue(Set(arrayLiteral: carEntity), forKey: "carRelationship")
managedObjectContext.save(nil)
}
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let navi = storyboard.instantiateViewControllerWithIdentifier("navi") as! UINavigationController
presentViewController(navi, animated: true, completion: nil)
}
保存数组时控制台显示如下结果
<Car: 0x1702a60c0> (entity: Car; id: 0x170229660 <x-coredata:///Car/tB81E6F91-4479-409B-AF1F-07AE75E1826F4> ; data: {
personCar = iMac;
personRelationship = "0xd000000000040000 <x-coredata://833104DC-EFF4-412D-AFCB-186BA53725F4/Person/p1>";
})
<Car: 0x1702a2d00> (entity: Car; id: 0x17022e980 <x-coredata:///Car/tB81E6F91-4479-409B-AF1F-07AE75E1826F6> ; data: {
personCar = "Mac Pro";
personRelationship = "0xd000000000040000 <x-coredata://833104DC-EFF4-412D-AFCB-186BA53725F4/Person/p1>";
})
<Car: 0x1742a5400> (entity: Car; id: 0x174232500 <x-coredata:///Car/tB81E6F91-4479-409B-AF1F-07AE75E1826F8> ; data: {
personCar = "MacBook Pro";
personRelationship = "0xd000000000040000 <x-coredata://833104DC-EFF4-412D-AFCB-186BA53725F4/Person/p1>";
})
<Car: 0x1702a1fe0> (entity: Car; id: 0x170230240 <x-coredata:///Car/tB81E6F91-4479-409B-AF1F-07AE75E1826F10> ; data: {
personCar = iPhone;
personRelationship = "0xd000000000040000 <x-coredata://833104DC-EFF4-412D-AFCB-186BA53725F4/Person/p1>";
})
<Car: 0x1702a34e0> (entity: Car; id: 0x170232720 <x-coredata:///Car/tB81E6F91-4479-409B-AF1F-07AE75E1826F12> ; data: {
personCar = iPad;
personRelationship = "0xd000000000040000 <x-coredata://833104DC-EFF4-412D-AFCB-186BA53725F4/Person/p1>";
})
这是第二个 UITableViewController
中对象没有关系的例子
<Car: 0x1742a5580> (entity: Car; id: 0xd0000000000c0002 <x-coredata://833104DC-EFF4-412D-AFCB-186BA53725F4/Car/p3> ; data: {
personCar = "MacBook Pro";
personRelationship = nil;
})
最佳答案
我更改了代码,它对我有用
let testArray = ["Zone", "Implicit", "Comma", "Department", "Define", "Provide"]
@IBAction func saveData(sender: UIBarButtonItem) {
for element in testArray {
let personEntity = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: managedObjectContext) as! Person
let carEntity = NSEntityDescription.insertNewObjectForEntityForName("Car", inManagedObjectContext: managedObjectContext) as! Car
let object: AnyObject? = fetchedResultsController.fetchedObjects!.first
var fixPersonEntity = object as! Person
println(fixPersonEntity)
carEntity.personCar = element
carEntity.personRelationship = fixPersonEntity
managedObjectContext.save(nil)
}
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let navi = storyboard.instantiateViewControllerWithIdentifier("navi") as! UINavigationController
presentViewController(navi, animated: true, completion: nil)
}
关于ios - 如何在核心数据中设置与对象的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32347583/