ios - 没有上下文的 CoreData 关系设置?

标签 ios iphone core-data nsmanagedobjectcontext

我有两个 NSManagedObject 子类。 航类飞机。每个 Flight 都与一架 Aircraft 相关联。

当用户创建一个航类时,我只做以下事情:

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 对象创建后立即插入,则不会发生此错误。但随之而来的问题是,如果用户取消并且不再需要该航类对象怎么办?

最佳答案

为什么不只使用一组父子上下文。继续在子上下文中插入所有内容。如果用户最终选择“保存”,则首先在子上下文(然后也是父上下文)上调用 save: selector。如果用户最终选择“取消”,则在子上下文中调用回滚:选择器。

http://www.cocoanetics.com/2012/07/multi-context-coredata/

关于ios - 没有上下文的 CoreData 关系设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217789/

相关文章:

iphone - 在托管对象上下文之间传递对象

ios - Odd RTCReporting bug

ios - SpriteKit 物理体在与关节连接时不会发生碰撞

iphone - UIScrollView ContentOffset 未到达屏幕边缘

iphone - 无需源代码即可集成 iPhone 应用程序

iphone - openGL iPhone sdk 中的网格创建

swift - 使用 SwiftUI 导航 View 和 Sorted FetchRequest 在详细 View 中重新排列列表项时出现问题

ios - 如何使用魔法记录将两个 NSMutableArray 中的数据保存到单个实体中

ios - 找不到此设备的有效配置文件,Xcode 6?

objective-c - UITableViewCell 在触摸时显示 subview 并在第二次触摸时隐藏它