2

私はしばらくの間アプリに取り組んでおり、リリースの準備がほぼ整っています。私はコアデータフェッチのエラー処理に対処したことはなく、その点で実際にエラーが発生したこともありません。私のすべてのフェッチには、標準が入力されています。

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

 }

スタートアップテンプレートから残ったアボートが残っている人もいるかもしれません。プロジェクト全体でこのエラーや同様のエラーを処理するためのベストプラクティスの推奨事項は何ですか?これらすべてを入れるための1つの明確な方法を作成できますか、それともケースバイケースで決定する必要がありますか。

4

1 に答える 1

2

まず、fetchedObjectsがnilの場合、エラーが発生していない可能性があります。エラーを直接チェックする必要があります。必要に応じて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でのフェッチ時にエラーを生成する場合、何か悲惨なことが起こりました。データの保存または挿入でエラーが発生した場合は、ユーザーに何を期待するかを伝えた後、その理由と最悪の場合は最悪の場合は変更を破棄することを試みることができます。変更を破棄することが受け入れられない場合(たとえば、ユーザーまたは他のユーザーが作成したデータのドキュメントを保存している場合)、問題を把握するためにさらに作業を行う必要があります。最も可能性の高い保存エラーは、ディスク容量が不足していることです。

于 2012-10-05T11:59:18.957 に答える