如何在coreData iOS中替换abort()函数
我正在使用CoreData应用程序,正如我们所知,在保存实体或从上下文中删除实体时,我们总是进行此检查如何在coreData iOS中替换abort()函数,ios,core-data,nsmanagedobject,nsmanagedobjectcontext,Ios,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我正在使用CoreData应用程序,正如我们所知,在保存实体或从上下文中删除实体时,我们总是进行此检查 NSError *error; if (![context save:&error]) { // Replace this implementation with code to handle the error appropriately. // abort() causes the application to generate a cras
NSError *error;
if (![context save:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
我在我的应用程序中的许多地方也有这样的代码,苹果的评论说,“用代码替换这个实现,以适当地处理错误。abort()会导致应用程序生成崩溃日志并终止。你不应该在发货应用程序中使用这个函数,尽管它在开发过程中可能很有用。
我想不出几件事
1) 向用户显示什么消息
2) 我应该要求用户向我发送错误报告吗
3) 我应该使用中止吗?1)完全由您决定。请务必简单地解释出现了问题,他们的数据无法保存。这种情况应该非常罕见
2) 这也取决于你,但大多数用户不知道如何做到这一点。如果你在应用程序中实现了将错误通过电子邮件发送给你的逻辑,这会有所帮助
责任3)绝对不是(关于“您不应在装运应用程序中使用此功能”有什么不清楚的地方?)。保存失败不会使您的应用程序无法继续,因为数据仍将在内存中可用
备选方案3)完全由您决定。如果应用程序审查团队发现了它,您将被拒绝。但这种保存失败不太可能发生在开发之外。(1)由您决定。(2)由您决定。(3)从您自己发布的评论中可以看出:“您不应该在装运应用程序中使用此功能“您应该在整个应用程序中实现一致的错误处理。如何做到这一点取决于你自己。实现这一点的常用方法是实现错误响应器链@quellish错误响应程序仅在OSX中可用(本文标记为iOS)是的,您可以在iOS上实现错误响应程序链。示例:好的,borrden,正如你所说的,如果我在我的应用程序中实现了一个电子邮件逻辑,id用户按cancel而不是给我发送电子邮件,那么会发生什么?这个应用程序是以asual运行还是会崩溃?我想不出有什么好的理由故意让它崩溃。您应该继续,因为没有发生损坏(保存失败)。它可能会继续失败,但我认为从用户的角度来看,它仍然比崩溃要好。没有什么比突然看到主屏幕更令人不安的了。