2012-10-05 41 views
2

我正在开发应用程序一段时间,准备发布。我从来没有提到核心数据抓取中的任何错误处理,在这方面并没有真正发生过错误。我所有的提取都是用标准填充的:正确处理核心数据提取中的错误

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

} 

也许有些在启动模板中有遗漏。在我的项目中处理这个和类似错误的最佳做法建议是什么?我可以采取一种独特的方法来处理所有这些问题,还是需要逐案做出决定?

回答

2

如果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上获取时发生错误,会发生灾难性事件。如果您在保存或插入数据时遇到错误,那么您可以尝试弄清楚为什么以及在告诉用户期望的结果后,最糟糕的情况是否会丢弃更改。如果不能接受更改(例如,如果您正在为用户或其他用户创建的数据存储文档),则需要做更多工作才能找出问题所在。最可能的保存错误将耗尽磁盘空间。

+0

非常有帮助,但我真的更寻找你建议的路径的细节。如果我为此制作了一般用途课程,我将在哪里创建它,我将如何参考它,它会做什么?我怎么知道它是否会崩溃?大多数情况下,我猜想适当的回应是给用户留言并退出。这似乎并没有从崩溃中大大改善。我注意到所有的应用程序,甚至是苹果公司的应用程序,都会偶尔崩溃而不通知。 –