1

NSFetchedResultsController を使用してテーブルビューを正常に更新しています。これが私がやっていることです:

  • アプリをアプリにロード- (NSFetchedResultsController *)fetchedResultsControllerし、テーブルビューを設定するために呼び出します
  • 設定self.fetchedResultsController.delegate = nil
  • 指定されたすべてのエンティティを削除します<myEntityName>
  • を使用して1 つ以上のエンティティを MOC に挿入する[NSEntityDescription insertNewObjectForEntityForName:<myEntityName> inManagedObjectContext:managedObjectContext];
  • FetchedResultsController バックアップのフック:self.fetchedResultsController.delegate = self;
  • 次に、MOCを保存します

このすべての後、FetchedResultsController メソッドが起動し、テーブルの更新controllerDidChangeContent:を配置しました。満足しています。[self.tableView reloadData]

繰り返しますが、これはすべて正常に機能します。何時間も頭をぶつけた原因は、単にメッセージを削除する[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext];、次のエラーが表示されることです。

'NSInternalInconsistencyException', reason: 'no section at index 3'

私は一般的に何が起こっているかを知っています.MOCはFetchedResultsControllerと歩調を合わせていません.他の人がこれを経験するcontroller:didChangeObject:atIndexPath:forChangeType:newIndexPath:と、引き出し始めconfigureCell:atIndexPath:て行ごとにfetchControllerを更新するようです.

しかし、私の質問は次のとおりです。managedObject 挿入メッセージを単純に削除すると、それ以外の場合は機能しているコードが壊れるのはなぜですか?

元のコードでは、mangedObjects を削除してから managedObjects を挿入しましたが、managedObjects のみを削除するとコードが壊れます。

各セルを個別に更新する必要はありません。現在のコードは正常に動作します。どうすれば機能しますか?

ここで何が欠けていますか?

4

0 に答える 0