例如,我有一个包含一些股票信息的应用程序,并将其存储在 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. 处理上下文保存错误的最佳做法是什么?也许我可以尝试一次又一次地保存它,而不是只是中止。
最简单的解决方案是重新设计应用程序以在“非常”端保存上下文——例如,当我的应用程序更改 View 或其他内容时,但我想知道所有可能性。
最佳答案
您不应该频繁调用“保存”,这对性能不利。
“save”方法让CoreData实际将修改后的数据保存到你的磁盘中,如果需要保存的数据很多,这会花费一些时间。
只需在您的应用程序即将退出或进入后台时保存一次即可。
如果您担心意外崩溃会丢失一些数据,您可以在您的用户暂时停止修改数据或退出应用程序的编辑 View 时调用“保存”。这取决于您的决定,但不要在每次更改数据时都保存。
关于iphone - 如何快速从 CoreData 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062408/