[iOS SDK] fetchedResultsController をアプリ起動後にリセットする方法
例えば、CoreData で表示しているデータに対して、アプリ起動後に、フィルタをかけて、それを反映したい場合があります。
参考:[iOS SDK][CoreData] 表示するデータの並び順・セクション名・フィルタを設定する方法
その際には、データを表示しているテーブルビューを reloadData するだけでは反映ないので、一度、fetchedResultsController をリセット(再起動)すると反映されます。
fetchedResultsController をリセットする方法
アプリ内で表示するデータにフィルタをかけた際に、以下の処理を呼び出して、fetchedResultsController をリセットすると表示するデータに反映されます。
self.fetchedResultsController.delegate = nil;
self.fetchedResultsController = nil;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[self.tableView reloadData];
delegate と Controller を nil にすれば OK みたいです。