0

ユーザーが 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 になったとは言えません。これについてどうすればよいかについて何か考えはありますか?前もって感謝します。

4

1 に答える 1