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

标签 objective-c core-data error-handling

我正在开发一个应用程序一段时间,即将发布。我从未解决过核心数据获取中的任何错误处理问题,在这方面还没有真正遇到过错误。我所有的提取都填充了标准:

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

 }

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

最佳答案

首先,如果 fetchedObjects 为零,则可能不会出现错误。您应该直接检查错误。 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 上获取时产生错误,就会发生灾难性的事情。如果您在保存或插入数据时遇到错误,那么在告诉用户会发生什么之后,您可以尝试找出原因以及最坏的情况是否会导致最坏的丢弃更改。如果放弃更改是 Not Acceptable (例如,如果您正在存储用户的文档或其他用户创建的数据),那么您需要做更多的工作来解决问题。最可能的保存错误是磁盘空间不足。

关于objective-c - 正确处理核心数据获取中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744377/

相关文章:

c# - 在GoDaddy服务器上安装NopCommerce时出现的问题

iphone - 如何设置日期格式MMM dd,yyyy HH :mm in iPhone

objective-c - 需要一些帮助来理解 Apple 关于 Core Data 的文档

iOS - 在更新到新版本时保留旧的 sqlite 数据库

ios - 尝试将纬度和经度保存到核心数据会导致访问错误

error-handling - 有什么方法可以快速查看所有现有的SSIS包事件处理程序?

ios - 在 iOS 7 中始终获得唯一的设备 ID

iphone - "pointInside:"是如何工作的?

iphone - 如何从 webview 中的 json responseString 获取特定方法

java - Java 中是否可以进行错误恢复?