2012-10-05 39 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

非常有幫助,但我真的更尋找你建議的路徑的細節。如果我爲此製作了一般用途課程,我將在哪裏創建它,我將如何參考它,它會做什麼?我怎麼知道它是否會崩潰?大多數情況下,我猜想適當的迴應是給用戶留言並退出。這似乎並沒有從崩潰中大大改善。我注意到所有的應用程序,甚至是蘋果公司的應用程序,都會偶爾崩潰而不通知。 –