この厄介なクラッシュとエラーが発生しています。
このコードを実行すると、クラッシュが発生します。
Address *address = [[Address alloc] initWithEntity:[NSEntityDescription entityForName:@"Address" inManagedObjectContext:managedObjectContext] insertIntoManagedObjectContext:nil];
//Crashes here!
[person addAddressObject:address];
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;
}))'
これを修正する方法がわかりません。おそらく、2つの異なるmanagedObjectContextsがあると思いますか?ただし、私のアプリでは、次のようにアプリデリゲートで作成されたもののみを参照しています(viewDidLoadで実行)。
if (managedObjectContext == nil)
{
managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSLog(@"After managedObjectContext: %@", managedObjectContext);
}
不一致をどこから探し始めるかについてのアイデアはありますか?ありがとう。
編集:
新しい発見。アプリがクラッシュする直前に、アドレスと個人の管理対象オブジェクトのコンテキストの両方をNSLoggedしました。(null)
直前にチェックを実行してコンテキストがnilの場合に設定したとしても、アドレスコンテキストはです。