UITableViewController または NSFetchedResultsController に少し問題があります。どちらが問題なのかはわかりませんが、UITableViewController だと思います。
前述したように、NSFetchedResultsController を使用してデータを UITableViewController に入力します。データは日付でソートされ、2010 年 5 月/2010 年 6 月などの日付-年ごとのセクションにも表示されます。これは、セクション ヘッダーとして表示されます。
新しいデータを追加すると、現在の日付がデフォルトとして自動的に使用されますが、現在セクション リストにない日付を使用する場合、たとえば 2010 年 4 月 (現在、リストには 5 月と 6 月)、これは次のようになります。正しく表示されません。アプリを終了して再度起動すると、新しいセクション ヘッダーが表示され、すべて問題ありません。
そのため、どういうわけかリストを更新または更新できる必要があります。コンテキストに追加して変更するだけでは、更新されないようです。
繰り返しますが、それが NSFetchedResultsController オブジェクトまたは UITableViewController である場合、何を更新する必要があるかわかりません。
更新#1:
このメソッドには例外があると思いました:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
// The fetch controller has sent all current change notifications, so tell the table view to process all updates.
[self.tableView endUpdates];
}
これは私がデータを移動する場所です:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
switch(type)
{
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
// [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
// Reloading the section inserts a new row and ensures that titles are updated appropriately.
[tableView reloadSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
このメソッドは、Apple の CoreDataBooks の例からほとんど取られています。そして、これはエラーです:
重大なアプリケーション エラーです。-controllerDidChangeContent: の呼び出し中に、NSFetchedResultsController のデリゲートから例外がキャッチされました。*** -[NSMutableArray removeObjectAtIndex:]: userInfo (null) の範囲 [0 .. 0] を超えるインデックス 1
その後、編集モード (削除ボタンが表示される場所) が機能しなくなります。
ありがとう。