この問題は、まれであり断続的ですが、非常に問題です。コアデータ/ SQLiteストア臨時データ損失
CoreDataをsqlite永続ストアとともに使用し、[ほとんどの場合は]完全に動作するアプリがあります。しかし、私は時々見つけられないデータ損失の報告を受けています。
コアデータ項目が変更されると、我々は次の呼び出しとそれを持続:
- (void) saveContext
{
if ([context hasChanges])
{
NSError *error = nil;
if (![context save:&error])
{
NSLog(@"Failed to save context: %@", error);
[self displayValidationError:error];
}
}
}
私の質問センターコンテンツの保存を考えると、一度このメソッドが呼び出された、かどうかの周りに、さ最終的に、またはキャッシュの一部が失われる可能性があります。
この問題は、一連の項目を入力した後にアプリがバックグラウンドになっているときに発生すると思われます。アプリがユーザーによって強制終了された場合、データが失われる可能性があります。これは、ユーザーがしばらくの間、アプリのままにしておき、多分何かのためにデバイスを使用するときに発生するようです。
私はAppDelegate(applicationwillTerminateとapplicationWillResignActive)からsaveContextを呼び出します。
だから、私の質問:
- は、持続性を確保するための適切なAppDelegateから呼び出していますか?
- 上記のsaveContextの呼び出しが行われたときに、保存されていないすべてのエンティティがディスクにフラッシュされることを保証するために必要なことはありますか?
- 私はこれを引き起こしている可能性のあるものを見落としていますか?
TIAを参照してください。私は私の問題に似たようなものはほとんど見つけられませんでした。