2012-01-20 19 views
5

コアデータに保存しようとすると何が起こるのか分かりますが、十分なディスク容量がありませんか?iOS:コアデータとディスク容量

私は保存操作で何らかの種類のNSErrorが生成されるとしますか?ディスクの書き込み中に他のエラーが発生していないことを、ディスク容量エラーであるとどのように伝えますか?

答えて

0

NSErrorインスタンスにクエリを実行し、関連するエラードメインの結果を解析することによって、エラーを見つけることができます。これらのドメインの一つは、おそらくあなたが探しているエラーコードがあります。ディスクがいっぱいにしようとしているのは数時間後

// Predefined domain for errors from most AppKit and Foundation APIs. 
FOUNDATION_EXPORT NSString *const NSCocoaErrorDomain; 

// Other predefined domains; value of "code" will correspond to preexisting values in these domains. 
FOUNDATION_EXPORT NSString *const NSPOSIXErrorDomain; 
FOUNDATION_EXPORT NSString *const NSOSStatusErrorDomain; 
FOUNDATION_EXPORT NSString *const NSMachErrorDomain; 
+0

正しく、エラーコードを問い合わせることができます。私は主にシミュレータでこれを実際にテストすることができないので、誰かがこのことを知っているか遭遇しているかどうかを尋ねていましたが、実際のデバイスを埋める必要があります。 – nsx241

+0

nsx241の場合、受信する可能性が最も高いエラーコードは、 'NSPersistentStoreSaveError'、' NSPersistentStoreIncompleteSaveError'または 'NSSQLiteError'です。もちろん、これを証明したい場合は、デバイスをいっぱいにする必要があります。大きな画像でこれを行うためのサンプルアプリケーションは簡単に書き込むことができます。アンドリュー – adonoho

3

を、私はあなたが得るエラーがあることを発見しました:

NSSQLiteErrorDomain = 13; 
NSUnderlyingException = "error during SQL execution : database or disk is full"; 

このエラーを取得することはむしろ困難です。

  • iOSデバイスは実際には完全であると主張しています。私は無料の0バイトを持っていると主張しているiPodに余分な206MBを詰め込んだ。
  • デバイスがいっぱいになると、キャッシュやその他の一時ファイルの削除が自動的に開始されます。
2

これは、エラー処理APIを実装する際に、CoreData開発者には不適切な選択です。 NSCoreDataErrorDomainを定義する代わりに、NSCocoaErrorDomainをオーバーロードして定義されたSQLiteエラーコードを渡します。here.

関連する問題