この質問が繰り返されている場合は申し訳ありませんが、考えられるすべての解決策を試しましたが、何もうまくいかなかったため、この質問をしています。
アドレス帳データベースからテーブル ビューに 500 近くのレコードを一度に読み込んでいます。レコードが少ない場合、たとえば 50 または 100 の場合、私のテーブルは問題なく表示されます。しかし、レコードの数が 300 以上になると、次のようなクラッシュが発生します。
*** キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了します。
Build Phase
ファイルのチェックインや iOS アプリのパッケージ コンテンツのチェックインなどの解決策がある他のフォームを読みました。私はすべてを試しましたが、ビルド段階でファイルが存在し、アプリファイルのパッケージコンテンツにも追加されます。また、これらのファイルを一度削除しました。つまり、それらを完全に削除し、UITableViewCell の新しいクラスを作成しましたが、それでもクラッシュが発生しました。
GroupmemberCell は、テーブル ビューに追加した xib です。以下は、行データソース メソッドのセルからのコード スニペットです。
static NSString *CellIdentifier = @"セル"; GroupmemberCell *cell = (GroupmemberCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];; もし (セル == ゼロ) { NSArray *cellxibfilepath = [[NSBundle mainBundle]loadNibNamed:@"GroupmemberCell" owner:self options:nil]; if (cellxibファイルパス) { for(cellxibfilepath 内の id cellObjects) { if ([cellObjects isKindOfClass:[UITableViewCell クラス]]) { セル = (GroupmemberCell*)cellObjects; } } } }
ここで問題になる可能性があるのは、同じコードがクラッシュすることなく 100 のレコード セットに対して機能するが、500 以上のレコードのセットを取得してテーブルに表示するとクラッシュすることです。
バックグラウンドで呼び出しを行っていないレコードを取得するために、一度試しましたが、クラッシュも解決されませんでした。
私の考え: 一度に大量のデータを読み込んでいると思いますが、UI 作成のメイン スレッドでほとんど問題が発生していない可能性があります。これは、配列内のデータを取得し、それらをチェックしてから、テーブルをリロードするコマンドを与えるだけだからです。 .
if (tableReloadArray.count!=0) { [objtable reloadData]; }
多くのアプリで 1000 以上のデータを超高速でロードするのを見てきました。彼らのアプローチは何ですか、または私が見逃しているベストプラクティスはありますか?教えてください。