2011-01-07 1 views
3


코어 날짜에서이 이상한 오류가 발생하며 그 이유를 이해할 수 없습니다.
아래 코드는 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

이것은 아마도 코어 데이터 자체의 버그와 관련이 있습니다. 나는 동일한 오류가 발생했습니다 (나는 여기에서 그것에 대해 물었습니다.) 그리고 유일한 해결책은 여전히 ​​동일한 결과를 허용하는 술어에서 키워드를 변경하는 것이 었습니다. 적절한 조합을 찾는 데 몇 가지 실험이 필요했습니다. 이상적은 아니지만 내 경험에 근거하여 내가 제시 할 수있는 최상의 대답입니다.

2

삭제 개체에 대한 참조를 보유하고 있거나 삭제 된 개체가 관찰자이고이 삭제 된 후에 콜백이 표시 될 가능성이 있습니까? 나는 약간 다른 오류 메시지가 있지만 최근에 이와 비슷한 것을 가지고있다. 필자의 경우에는 (일부 조건에서는) 삭제시에도 추락했지만, 삭제 될 객체는 실제로 삭제되었다.

아직 실행하지 않은 경우 실행 메뉴에서 목표 -C 예외에서 중지를 선택하십시오. 이것은 내 사고의 근본 원인을 추적하는 데 도움이되었습니다. 내 경우에는 KVO 관측자가 삭제 된 NSManagedObject 속성의 값 변경 콜백을 받고있었습니다.