ユーザーが NSManagedObjectModel サブクラスである AddressAnnotation (マップ上のポイント) を作成した場合、ユーザーが新しいルート (AddressAnnotation と対多の関係を持つ他のエンティティ) を作成した場合に、2 つのコンテキストを使用しています。オブジェクトは tempContext で作成されているため、簡単に破棄できます。そのコードは次のようになります。
AddressAnnotation *anAddress = [AddressAnnotation insertAddressAnnotationWithCoordinate:coordinate inManagedObjectContext:self.tempContext];
[self.route addAddressAnnotationsObject:anAddress];
次に、アドレスとルートを保存するときに、次のようにします。
NSManagedObjectContext *tempContext = [self.route managedObjectContext];
[tempContext performBlock:^{
NSError *error = nil;
if (![tempContext save:&error]) {
NSLog(@"an error occurred: %@", [error localizedDescription]);
}
[self.managedObjectContext performBlock:^{
NSError *error = nil;
if (![_managedObjectContext save:&error]) {
NSLog(@"error in main context: %@", [error localizedDescription]);
}
}];
}];
したがって、その部分は正常に機能します。私が今抱えている問題は、これらの保存されたルートを表示する別のビュー コントローラーで、ルートが私のメイン コンテキストである self.managedObjectContext から来ていることです。保存したルートを表示した後、それを選択すると、マップに戻り、さらに追加できるようになります。私はこれを使ってストーリーボードでそれを行います:
if ([destination respondsToSelector:@selector(setManagedObjectContext:)]) {
[destination setValue:_managedObjectContext forKey:@"managedObjectContext"];
}
しかし、今、[self.route addAddressAnnotationsObject:anAddress];
self.tempContext がルートのコンテキストとは異なるため、を呼び出そうとすると、追加できません。また、メイン コンテキストが tempcontext になったとは言えません。これについてどうすればよいかについて何か考えはありますか?前もって感謝します。