1

削除後の保存中に以下のエラーがスローされます。 NSManagedObjectContextは、他のコンテキストのオブジェクトを削除できません。

また、データのフェッチ元のmanagedobjectcontextが、データを削除しているmanagedobjectcontextと同じであるかどうかを確認しました。それらは両方とも等しいことがわかります。以下の比較をご覧ください。

    NSManagedObjectContext *managedobjectcontext=[Singleton managedObjectContext];    

    NSArray *allprebuyers=[Fetchsavefromcoredata arrayfromentityresult:@"Buyer"];


    for(int i=0;i<[allprebuyers count];i++)
    {
        Buyer *buyerobj=[allprebuyers objectAtIndex:i];

        NSLog(@"class name : %@",NSStringFromClass([buyerobj class]));

        //object comparison for fetched moc and moc which is deleting, log says Equal.
        if ([[buyerobj managedObjectContext] isEqual:managedobjectcontext]) 
        {
            NSLog(@"Equal");
        }
        else 
        {
            NSLog(@"Not Equal");
        }
        [managedobjectcontext deleteObject:buyerobj];

        NSError *error=nil;

        [managedobjectcontext save:&error];

    }

私はこの問題を解決しようとしてきました、どんな助けでもありがたいです。

4

1 に答える 1

1

管理対象オブジェクトを削除するオプションが必要です。

1)所有のコンテキストで

[object.managedObjectContext deleteObject: object];

2)別の文脈で

[anotherContext deleteObject: [anotherContext objectRegisteredForID: object.objectID]];

オブジェクトが別のコンテキストに登録されている場合、コンテキスト内のオブジェクトを削除することはできません。

また、コンテキストは、メインまたはプライベートのスレッドまたはキューに関連付けられていることに注意してください。正しいスレッド/キューからコンテキストにアクセスするようにしてください。

于 2012-07-27T12:53:01.250 に答える