2

各行に画像とテキストが含まれるテーブルビューがあります。画像は非同期でロードされます。イメージがサーバーからフェッチされるとすぐに、デリゲート メソッドが呼び出されます。デリゲート メソッドには、画像のフェッチを開始したインデックス パスが含まれているため、それらのセルのみを再読み込みできます。画像がフェッチされたら、データ ソースに十分なデータが含まれていることを確認して、インデックス パスが範囲外にならないように、追加のチェックを行います。この条件を設定しても、アプリがクラッシュします。

画像がフェッチされる前にテーブル データが更新される可能性があります。これが問題の原因であることはわかっていますが、reloadRowsAtIndexPaths の前にチェックを追加しているにもかかわらず、なぜこれがクラッシュするのかわかりません。

エラーは次のとおりです。

致命的な例外 NSInternalInconsistencyException 無効な更新: セクション 2 の行数が無効です。更新後の既存のセクションに含まれる行数 (4) は、更新前にそのセクションに含まれる行数 (6) に等しい必要があります。そのセクションから挿入または削除された行数 (1 挿入、1 削除) と、そのセクションに移動した行数またはそのセクションから移動した行数 (0 移動、0 移動) を差し引いた値。

誰かがこれに関する情報を共有できますか?

テーブルをリロードするコード スニペット

// this method will be called on main thread

- (void)loadImageAtIndexPath:(NSIndexPath *)inIndexPath {

      if(inIndexPath.row < dataSource.count) {

            [self.listView reloadRowsAtIndexPaths:[NSArray arrayWithObject:inIndexPath]
                                            withRowAnimation:UITableViewRowAnimationNone];

      }

}
4

0 に答える 0