【发布时间】:2010-10-02 15:26:35
【问题描述】:
我遇到了无法保存 Core Data 中的上下文的问题。
当我尝试调用 [context save:] 时出现随机崩溃。有时它可以工作,有时它不会并导致应用程序崩溃。这是我的删除代码。通过检查 [context respondsToSelector] 是否保存,我已经能够减少崩溃次数。奇怪的是,即使它失败(respondsToSelector 失败),而且我没有调用保存,它仍然被删除!?但是,当 respondsToSelector 成功时,我尝试调用 save 时,有时它仍然会崩溃。所以代码通过测试稍微稳定了一点,但我认为Core Data和save方法有问题。很难追查到这个问题,因为它看起来确实是随机的。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object.
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
Accidents* accidentDelete = [self.fetchedResultsController objectAtIndexPath:indexPath];
[context deleteObject:accidentDelete];
// Causing crash...
NSError *error = nil;
if ([context respondsToSelector:@selector(save:)])
if (![context save:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
else
NSLog(@"Error! Context does not respond to save!");
}
}
【问题讨论】:
标签: objective-c core-data ios