核心数据提取中的正确处理错误

时间:2012-10-05 10:32:08

标签: objective-c core-data error-handling

我正在开发应用程序一段时间,几乎准备好发布了。我从来没有解决过核心数据提取中的任何错误处理问题,在这方面确实没有错误。我的所有提取都填充了标准:

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

 }

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

1 个答案:

答案 0 :(得分:2)

如果fetchedObjects为nil,则可能没有错误。您应该直接检查错误。 Read up on NSError if needed

If (error){
    //handle error here...    
    <#statements#>

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

下面列出了所有可能的coreData错误代码: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Miscellaneous/CoreData_Constants/Reference/reference.html

削减您将使用的内容,例如,如果您没有使用验证,则永远不会收到验证错误。

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

然后,在每个错误点,可能会出现一些您希望以不同方式处理的特定错误。正如您将要查看代码中的每个错误点以删除那些abort()调用一样,此分析将很容易适合您的过程。

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