【发布时间】:2016-04-23 04:27:34
【问题描述】:
orderDetail 与 consume 相关。 consume 是从 CoreDataContext 获取的,作为传递给此处的参数并且存在。
orderDetail = [NSEntityDescription insertNewObjectForEntityForName:@"OrderDetail" inManagedObjectContext:CoreDataContext];
orderDetail.order = consume
但是这段代码抛出异常:
非法尝试在不同上下文中的对象之间建立关系“顺序”
我用NSLog检查异常
NSLog(@"%@", orderDetail.managedObjectContext);
NSLog(@"%@", consume.managedObjectContext);
然后我发现orderDetail.managedObjectContext是存在的,但是consume.managedObjectContext是nil
这就是抛出异常的原因吗?我不知道为什么会这样。
更新我的问题,了解更多信息:
第一
我只有一个上下文
第二
当我删除 consume-entity 并重新插入 consume-entity 时发生这种情况:
当我将 A viewController 推送到 B viewController(B viewWillAppear) 时,我请求 orderDetail 并建立了 consume 的关系,当我在方法 viewWillAppear 中弹出到 A 时,我请求消费,当我收到数据时,我调用了
[ CoreDataContext performBlock:^{
[Consume cleanTheContext:CoreDataContext];...
... ... ... ...
for (NSDictionary *consume in consumes) {
[Consume consumeWithLecaiInfo:consume inManagedObjectContext:CoreDataContext byUser:user];
}];
清理旧的consume并插入新的consume(我知道我应该更新consume,而不是删除并重新插入,但我不知道为什么consume以这种方式丢失了它的managedObjectContext)
实际上这个错误偶尔会发生一次,push A,pop B,push A,pop B ...抛出异常。
【问题讨论】:
标签: ios objective-c core-data