Objective c 正确处理核心数据获取中的错误

Objective c 正确处理核心数据获取中的错误,objective-c,core-data,error-handling,Objective C,Core Data,Error Handling,我在一个应用程序上工作了一段时间,几乎可以发布了。我从未处理过核心数据获取中的任何错误处理,也从未在这方面发生过错误。我的所有回迁都使用以下标准填充: if (fetchedObjects == nil) { // Handle Error, or Not } 也许有些人在启动模板中留下了一个中止。在我的整个项目中,处理此错误和类似错误的最佳实践建议是什么?我可以用一种不同的方法来放入所有这些内容吗?或者我必须根据具体情况来决定。首先,如果获取的对象为零,则可能没有错

我在一个应用程序上工作了一段时间,几乎可以发布了。我从未处理过核心数据获取中的任何错误处理,也从未在这方面发生过错误。我的所有回迁都使用以下标准填充:

 if (fetchedObjects == nil) 
 {
        // Handle Error, or Not

 }

也许有些人在启动模板中留下了一个中止。在我的整个项目中,处理此错误和类似错误的最佳实践建议是什么?我可以用一种不同的方法来放入所有这些内容吗?或者我必须根据具体情况来决定。

首先,如果获取的对象为零,则可能没有错误。您应该直接检查错误

If(错误){
//在这里处理错误。。。
//如果这会导致撞车,请提前返回
返回;
}
以下列出了所有可能的coreData错误代码:

减少将要使用的验证,例如,如果不使用验证,则永远不会出现验证错误

然后我将创建一个通用类来处理一些更糟糕的类。它们永远不可能发生,但如果他们做到了,你最好的选择是向用户显示一条消息,说明发生了不好的事情,并要求他们删除并重新安装应用程序。(或者编写一些重置代码,如果这对您的实现来说不是太难的话)

然后,在每个错误点,可能有一些特定的错误,您希望以不同的方式处理。由于您将查看代码中的每个错误点以删除这些abort()调用,因此此分析将很容易地融入到您的流程中


通常,如果核心数据在iPhone上获取时出错,就会发生灾难性的事情。如果您在保存或插入数据时出错,那么您可以在告诉用户预期结果后,尝试找出原因,以及最坏的情况是否会发生。如果放弃更改是不可接受的(例如,如果您正在为用户存储文档或其他用户创建的数据),则您需要做更多的工作来解决问题。最可能的保存错误是磁盘空间不足。

非常有用,但我更想了解您建议的路径的详细信息。如果我为此创建了一个通用类,我将在哪里创建它,我将如何引用它,它将做什么?我怎么知道它会不会坠毁?大多数情况下,我认为适当的反应是给用户一条消息并退出。从一次车祸来看,这似乎不是一个很大的进步。我注意到所有的应用程序,即使是苹果的,偶尔也会在没有通知的情况下崩溃。
If (error){
    //handle error here...    
    <#statements#>

    //return early if this is going to cause a crash
    return;
}