- (NSFetchedResultsController *)fetchedResultsController
CoreDataBook の例から始めて、標準的な方法で内部に述語があります。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"state=%@ && date >= %@ && date < %@", @"1",fromDate,toDate];
[fetchRequest setPredicate:predicate];
これは正常に機能しますが、アイテムを編集すると、Update ではなく NSFetchedResultsChangeDelete が返されます。メイン ビューが戻ると、項目がありません。シミュレーターを再起動すると、削除が保存されず、述語が正しく機能している正しい編集結果が表示されます。
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
2 つの述語行のみをコメントアウトすることで動作を確認できます。NSFetchedResultsChangeDelete の代わりに NSFetchedResultsChangeUpdate を編集して呼び出した後、完全なセットで正しく返されるはずです。
同様の動作を報告しているhttp://matteocaldari.it/2009/11/multiple-contexts-controllers-delegates-and-coredata-bugを読み ましたが、問題の回避策は見つかりませんでした。