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