我从Core Date得到了这个奇怪的错误,我无法理解为什么
当我删除UITableView的一行时,执行以下代码
我将一个字符串和一个对象传递给下面的方法,它在具有该字符串并具有该对象的外键的数据库表中获取该文章。然后我删除该对象并重新加载表。
- (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.
请帮忙!
提前感谢大家!
答案 0 :(得分:2)
这可能与Core Data本身的错误有关。我出现了同样的错误(我在这里询问了这个问题),我唯一的解决方法是更改谓词中仍然允许相同结果的关键字。需要一些实验来找到正确的组合。不理想,但根据我的经验,这是我能提供的最佳答案。
答案 1 :(得分:2)
您是否可能持有对删除对象的引用,或者删除的对象是观察者,并且在删除之后收到回调?我最近有类似的东西,虽然略有不同的错误信息。在我的情况下,我在删除时也崩溃了(在某些情况下),但是当我重新启动时,删除的对象实际上已被删除。
如果尚未执行此操作,请在“运行”菜单下选择“停止Objective-C异常”。这有助于我找出崩溃的根本原因。在我的例子中,KVO观察者得到了已删除的NSManagedObject属性值的变化回调。