我有两个NSManagedObject
的子类。 Flight
和Aircraft
。每个Flight
与一个Aircraft
相关联。没有上下文的CoreData关系设置?
当用户创建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
对象,就不会发生此错误。但是这样会产生一个问题,即如果用户取消并且不再需要这个飞行物体呢?
我同意OP和苹果确实太AFAICS - >他们推荐了一个从无到有方面 –
我不会把未完成的数据到任何“全球背景下” –