2011-01-07 6 views
3


Core Dateからこの奇妙なエラーが発生しましたが、その理由を理解できません。
次のコードは、UITableViewの行を削除すると実行されます。
以下のメソッドに文字列とオブジェクトを渡し、その文字列を持ち、そのオブジェクトへの外部キーを持つデータベーステーブル内のアーティクルを取り出します。次に、そのオブジェクトを削除し、テーブルをリロードします。コアデータエラー:_Unwind_Resumeは画像CoreDataの_PFFaultHandlerLookupRow関数から呼び出されます

 
- (void)deleteFavorite:(NSString *)link inFolder:(Favorites *)f { 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *favsDecriptor = [NSEntityDescription entityForName:@"Favorites" inManagedObjectContext:context]; 
    [request setEntity:favsDecriptor]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(belongsTo == %@) AND (link = %@)", f, link]; 
    [request setPredicate:predicate]; 

    NSError *error = nil; 
    NSMutableArray *fav = [[NSMutableArray alloc] init]; 
    fav = [[context executeFetchRequest:request error:&error] retain]; 
    if (![context save:&error]) { 
     NSLog(@"Cannot fetch the story from the fetch request."); 
    } 

    NSLog([[fav objectAtIndex:0] title]); 
    error = nil; 
    [context deleteObject:[fav objectAtIndex:0]]; 
    if (![context save:&error]) { 
     NSLog(@"Can't delete the fav! %@", error); 
    } 
} 

アプリがすぐにクラッシュし、コンソールにこのメッセージが表示されます。 しかし、私は後にアプリケーションを起動すると、行が削除されています。

 
Detected an attempt to call a symbol in system libraries that is not present on the iPhone: 
_Unwind_Resume called from function _PFFaultHandlerLookupRow in image CoreData. 

助けてください!
おかげさまで皆様に感謝します!

答えて

2

これは、おそらくCore Data自体のバグに関連している可能性があります。私は同じエラーが出てきました(私はここでそれについて尋ねました)と私の唯一の修正は、同じ結果を許容する述語のキーワードを変更することでした。適切な組み合わせを見つけるためにいくつかの実験が必要でした。理想的ではありませんが、それは私の経験に基づいて提供できる最高の答えです。

2

削除オブジェクトへの参照を保持しているか、削除されたオブジェクトがオブザーバであり、が削除された後にコールバックが返されている可能性はありますか?私はこれと似たようなものがありましたが、少し違うエラーメッセージが出ました。私の場合、私はまた、(いくつかの条件の下で)削除時にクラッシュしましたが、私が再起動したときに、削除されるオブジェクトは、実際に削除されました。

まだ実行していない場合は、[実行]メニューの[Objective-Cの例外で停止]を選択します。これは私のクラッシュの根本原因を追跡するのに役立ちました。私の場合、KVOオブザーバーは、削除されたNSManagedObjectのプロパティの値の変更のコールバックを取得していました。

関連する問題