iphone - 如何快速从 CoreData 中删除?

标签 iphone ios core-data

例如,我有一个包含一些股票信息的应用程序,并将其存储在 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/

相关文章:

iphone - 如何处理 subview 的方向变化

iphone - 使用 FBConnect 通过 Facebook 通过 iPhone 应用程序对用户进行身份验证的 Rails 后端服务器进行身份验证

ios - 如何将核心数据用于主要应用程序和单元测试?

ios - 保存在其他线程中时,应用崩溃

iphone - 为什么 UIWindow 既是 UView 的子级又是父级?

iphone - iOS 应用程序的启动顺序是什么?

ios - react native ios 构建失败

ios - 子类或协议(protocol),如何?

ios - 仪器的测试结果目录位置

swift - 尝试使用关系理解和构建核心数据模型