【发布时间】:2014-01-19 14:10:36
【问题描述】:
我有两个NSManagedObject 子类。 Flight 和 Aircraft。每个Flight 关联一个Aircraft。
当用户创建Flight时,我只做以下事情:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Flight" inManagedObjectContext:self.managedObjectContext];
self.flight = [[Flight alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
创建对象但不要将其插入managedObjectContext,直到用户确定他们想要保存它。如果他们保存,我插入对象,如果他们取消,它被丢弃。
到目前为止,这是一个很好的解决方案。当用户选择Aircraft 时,我会这样做:
[self.flight setAircraft:aircraft];
但是,由于 flight 对象尚未插入到 managedObjectContext 中,因此应用程序崩溃并出现以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'aircraft' between objects in different contexts
这是有道理的。如果我在创建flight 对象后立即插入它,则不会发生此错误。但随之而来的问题是,如果用户取消并且不再需要此飞行对象怎么办?
【问题讨论】:
标签: ios iphone core-data nsmanagedobjectcontext