CoreDataで「CoreData could not fulfill a fault」
CoreDataにアクセスすると、「CoreData could not fulfill a fault」が発生する場合の対処法。
faultはデータを読み込めていない状態なのですが、それを解決しようとして落ちたという感じです。
私の状況はNSFetchedResultsControllerを使っていました。また症状としては、アプリインストール後の一発目は大丈夫なのですが、2回目以降で、このエラーが発生します。
原因は、
[[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:moc sectionNameKeyPath:nil cacheName:@"Root"];
です。@”Root”でキャッシュをなんとなく指定したのですが、これが問題です。NSFetchedResultsControllerはキャッシュがあれば、そこを見に行きます。私の場合、画面起動時に古いデータを削除していたのが問題で、CoreData上は存在しないファイルがキャッシュに残っており、それを参照したNSFetchedResultControllerがFaultを解決できないわけです。
キャッシュを削除することで解決します。
[NSFetchedResultsController deleteCacheWithName:@"Root"];
-
前の記事
Elasticsearch + KibanaでConnectionFailed 2015.02.08
-
次の記事
Djangoの読み方 2015.02.11