4

コアデータが私の神経質になっています。古いデータを削除していますが、サーバーから受信した新しいデータを挿入したいと考えています。

削除部分が「sigabort」を与えるようになりました:

-[NSManagedObjectContext delete:]: インスタンス 0x522f550 に送信された認識されないセレクター' *最初のスローコールスタック:(0x320f82a3 0x39d4797f 0x320fbe07 0x320fa531 0x32051f68 0x3a15f11f 0x3a16d259

削除はバックグラウンドで行われ、nsmanagedobjectcontext はプライベート コンカレンシー タイプです。コンテキストとオブジェクト コンテキストのポインターを出力しました。

po コンテキスト NSManagedObjectContext: 0x522f550

po tmpCon.managedObjectContext NSManagedObjectContext: 0x522f550>

削除するためのコードは次のとおりです。

     NSError *errorAllCons = nil;
    NSFetchRequest *allevents = [[NSFetchRequest alloc] init];
    [allevents setEntity:[NSEntityDescription entityForName:@"TEventContact" inManagedObjectContext:context]];
    NSArray *allCons = [context executeFetchRequest:allevents error:&errorAllCons];
    for (TEventContact *tmpCon in allCons)
    {
        [context delete:tmpCon];
    }

[context delete:tmpCon]; 誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

24

使用する

 [context deleteObject:tmpCon];

それは問題を解決します

于 2013-09-27T12:22:14.760 に答える
2

オブジェクトを完全に削除するには、このようにします

for (TEventContact *tmpCon in allCons)
{
    [context deleteObject:tmpCon] /// for deleting object in context
}    
[context save]; /// to reflect changes in database you need to save that context

コンテキストを保存しないと、データベースに反映されず、別のコンテキストで DIRTY_READ が発生する可能性があります

于 2013-09-27T12:38:41.657 に答える