Jos*_*ane 3 iphone core-data objective-c ipad
我得到了这个令人讨厌的崩溃和错误.
此代码运行时发生崩溃:
Address *address = [[Address alloc] initWithEntity:[NSEntityDescription entityForName:@"Address" inManagedObjectContext:managedObjectContext] insertIntoManagedObjectContext:nil];
//Crashes here!
[person addAddressObject:address];
Run Code Online (Sandbox Code Playgroud)
Illegal attempt to establish a relationship 'person' between objects in different contexts
整个控制台错误如下.
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'person' between objects in different contexts (source = <Address: 0x1f87e270> (entity: Address; id: 0x1f87e2b0 <x-coredata:///Address/t748EE284-0311-4489-9654-1D902EB0D4CC2> ; data: {
addressLine1 = "";
addressLine2 = "";
addressLine3 = "";
city = "";
country = "";
person = nil;
state = "";
title = "";
zip = "";
}) , destination = <Person: 0x1ed9e1e0> (entity: Person; id: 0x1ed9c710 <x-coredata://ED0283A9-A847-407E-BFEC-CF2BF85C6A9C/Person/p1> ; data: {
address = (
"0x1f87e2b0 <x-coredata:///Address/t748EE284-0311-4489-9654-1D902EB0D4CC2>",
"0x1ed93e70 <x-coredata://ED0283A9-A847-407E-BFEC-CF2BF85C6A9C/Address/p1>"
);
favourite = nil;
firstName = Josh;
lastName = Kahane;
}))'
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题.据推测它认为有两种不同的managedObjectContexts?但是,在我的应用程序中,我只引用了我的app委托中所做的那样(在viewDidLoad上运行):
if (managedObjectContext == nil)
{
managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSLog(@"After managedObjectContext: %@", managedObjectContext);
}
Run Code Online (Sandbox Code Playgroud)
关于从哪里开始寻找差异的任何想法?谢谢.
编辑:
新发现.就在应用程序崩溃之前,我已经NSLogged地址和人员管理对象上下文.结果是地址上下文(null),即使我在前面运行检查设置上下文,如果它的nil.
你把它插入零managedObjectContext.
您需要将对象插入到NSManagedObjectContext用于实体的对象中.即managedObjectContext.
在Address对象的alloc init中.
在OP中阅读您的评论.
你要么......
保存所有必需的值,然后在确认时创建Address对象并将其全部插入.
要么...
创建对象并插入它创建所有关系,然后如果用户按下取消,则删除该对象.
我会做这两个中的一个来避免这个错误.
| 归档时间: |
|
| 查看次数: |
4240 次 |
| 最近记录: |