如何在iPhone上正确处理核心数据保存错误?

如何在iPhone上正确处理核心数据保存错误?,iphone,user-interface,core-data,user-experience,Iphone,User Interface,Core Data,User Experience,因此,我有一个用于存储、搜索和操作数据的基本应用程序。基本积垢操作。在我存储或更新这些数据的代码的各个地方,我基本上有: NSError *error; if (![self.managedObjectContext save:&error]) { // TODO: Handle this error NSLog(@"Error while saving data %@, %@", error, [error userInfo]); } 当出现这种情况时,大多数人在用户体验方面

因此,我有一个用于存储、搜索和操作数据的基本应用程序。基本积垢操作。在我存储或更新这些数据的代码的各个地方,我基本上有:

NSError *error;
if (![self.managedObjectContext save:&error]) {
  // TODO: Handle this error
  NSLog(@"Error while saving data %@, %@", error, [error userInfo]);
}
当出现这种情况时,大多数人在用户体验方面会做什么

我唯一想到的就是弹出一些可怕的
UIAlertView
,其中有一条模糊的信息,表明出了问题;我真的不知道如何恢复这些东西

为了便于论证,让我们假设我的模型几乎没有验证,因此可能发生的唯一错误要么是严重错误,要么是编程问题


关于用户体验有什么好主意吗?

在这种情况下,我认为最好的办法是向用户发出警报并退出应用程序

简单的回答是,我从未在生产中发生过保存错误。通常,我会做出这些断言,并让它们使应用程序崩溃。这是为了确保我在开发过程中捕捉到它们

如果您的应用程序编写得很好,则在用户运行应用程序时不应出现这些情况

至于文本,这取决于您的应用程序,没有通用的规则。

雅各布·尼尔森(Jakob Nielsen)有一个您可能想要查看的文档;在他提出的所有建议中,我强烈建议您在错误消息中指出这不是用户的错。根据我自己在用户测试中的经验,大多数用户认为当出现错误时他们做错了什么,这导致了挫折感

可能是这样的:

存钱有个问题:别担心,这不是你的错!如果重新启动应用程序,可以重试。但请联系[开发人员联系人],并告诉他错误是[简短、令人难忘的错误代码]


用户能对此做些什么吗?或者这完全是用户无法控制的?除了关掉电脑,他们什么也做不了吗?是的,让我们假设这是一种他们无能为力的情况;比如调用[NSManagedObjectContext save:]失败。有关于措辞的提示吗?我把这些都放进去了,最后我听到了很多蹩脚的话:“保存小部件时出错,请尝试重新启动应用程序。”。我讨厌那种东西,但我不知道还能做什么?!虽然我同意这种看法,但你不应该以某种方式来处理这些问题,仅仅是为了处理你错过的边缘问题,或者那些已经处理但由于某种原因发生的问题吗?(例如,设备故障导致一点翻转)一旦开始添加验证规则或唯一约束,您将获得保存错误。只有在用户界面和/或合并策略中未正确处理这些错误时。。