我正在开发一个应用程序一段时间,几乎可以发布了。我从未解决核心数据提取中的任何错误处理,在这方面还没有真正发生过错误。我所有的提取都填充了标准:
if (fetchedObjects == nil)
{
// Handle Error, or Not
}
也许有些人在启动模板中留下了一个中止。在整个项目中处理此错误和类似错误的最佳实践建议是什么?我可以采用一种不同的方法来放入所有这些内容,还是必须根据具体情况做出决定。
我正在开发一个应用程序一段时间,几乎可以发布了。我从未解决核心数据提取中的任何错误处理,在这方面还没有真正发生过错误。我所有的提取都填充了标准:
if (fetchedObjects == nil)
{
// Handle Error, or Not
}
也许有些人在启动模板中留下了一个中止。在整个项目中处理此错误和类似错误的最佳实践建议是什么?我可以采用一种不同的方法来放入所有这些内容,还是必须根据具体情况做出决定。
首先,如果 fetchedObjects 为零,则可能没有错误。您应该直接检查错误。如果需要,请阅读 NSError
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 上获取错误时会发生灾难性的事情。如果您在保存或插入数据时遇到错误,那么您可以在告诉用户期望什么之后尝试找出原因,如果最坏的情况发生最坏的情况下丢弃更改。如果丢弃更改是不可接受的(例如,如果您正在为用户或其他用户创建的数据存储文档),那么您需要做更多的工作来找出问题。最可能的保存错误将是磁盘空间不足。