【发布时间】:2011-08-15 22:26:49
【问题描述】:
例如,我有一个包含一些股票信息的应用程序并将其存储在 CoreData 中。我有两个实体 Stock(name) 和 DailyStockData(date,number),我为每个股票实体存储了两年的信息。然后用户可以在 TableView 中删除一些股票名称。
在我的- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
我删除了这个 Stock 和 DailyStockData 级联,然后保存上下文。
我的存档代码是这样的
// Save the context.
NSError *error = nil;
if (![context save:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
问题是:当用户快速删除股票时 - 我的应用程序崩溃了。我知道原因是当我的设备没有完成保存以前的删除事务并调用以再次保存时“中止”命令。
所以我在这里有两个问题^) 1.有什么办法可以防止这种崩溃? 2. 处理上下文保存错误的最佳实践是什么?也许我可以尝试一次又一次地保存它而不是中止。
最简单的解决方案是重新设计应用程序以在“非常”端保存上下文 - 例如,当我的应用程序更改视图或其他情况时,但我想知道所有可能性。
【问题讨论】:
-
发布实际的错误文本可能会有所帮助。
-
书中的示例中止,因为它们只是想提醒开发人员注意失败。您永远不会在发布应用程序中中止。相反,您应该捕获错误、记录错误、分析错误并采取适当的措施。