我正在尝试使用 Segues 将核心数据 MOC 和实体传递给其他 View Controller 。
所以我正在使用prepareForSegue方法并执行类似的操作
SecondViewController *svc = (SecondViewController *)[segue destinationViewController];
//passing the current managed object context to the other view controller
svc.managedObjectContext = managedObjectContext
然后我希望将 currentEntity 传递给同一个 View Controller
//rootEntity is -- TheManagedObject * rootEntity in the second view controller
svc.rootEntity = currentEntity
我不确定上面的 svc.rootEntity 是否是正确的方法,但感觉是将 currentEntity 注入(inject)下一个 View Controller 的正确方法。
在第二个 View Controller 中,我想根据上面的 rootEntity 注入(inject)为实体插入一个新对象。
我知道我通常会通过这样做创建一个新的托管对象:
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"TheNewObject" in ManagedObjectContext:managedObjectContext //MOC injected from the First View Controller
我的问题是,我想要执行上面的 newObject,但我希望它依赖于(关系)到第一个传递的实体(上面的 rootEntity)。
我已经接近了,但我不断获得不关联的 NewObjects(应该是一对多)
下一步将重复上述操作,并根据第二个 View Controller 中的 NewObject 在下一个 View Controller 中插入另一个级别。
我读过 Zarra 的书和其他一些书,但他们都使用似乎不适用于 segues 的 init 方法。
谢谢
最佳答案
你做的一切都是正确的。一旦进入新的 View Controller ,只需像最初插入新实体和关系时一样继续即可。毕竟,您引用的是相同托管对象上下文。
例如,如果您想插入一个新的关系实体,您可以这样做:
NSManagedObject *newObject = [NSEntityDescription
insertNewObjectForEntityForName:@"SubEntity"
inManagedObjectContext:managedObjectContext];
newObject.rootEntity = self.rootEntity;
“SubEntity”类型的 newObject 现在与 rootObject
关联。
关于ios - 核心数据对象注入(inject)(带有依赖项) Storyboard ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179654/