私はテーブルビューでNSFetchedResultsController
を使用しています。私の問題は、私の_fetchedResultsController
に0行があるときに "データビューなし"を作成したいと思うことです。NSFetchedResultsControllerを使用しているtableViewにデータビューがありません
私はそれは素晴らしい仕事を私のnumberOfSectionsInTableView:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if ([[_fetchedResultController.sections firstObject] numberOfObjects] == 0) {
MyNoDataView *view = [[MyNoDataView alloc] initWithFrame:tableView.frame];
tableView.backgroundView = view;
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
return 0;
}
else {
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tableView.backgroundView = nil;
return 1;
}
}
でそれを作成しようとしました。データがまだ挿入されていない場合はデータビューが表示されず、データがある場合はテーブルビューが表示されます。
私の問題は、その行で削除アクションを行ったときに始まります。技術的には、唯一の1行があれば、私はちょうど、そして、このNSPredicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isActive == %@ ", @YES];
[fetchRequest setPredicate:predicate];
を使用してfetchedResultController
に私のfetchRequest
ように、そのオブジェクトのプロパティ(isActive
)を更新し、私はそれを削除し、私はこのエラーを取得
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView internal bug: unable to generate a new section map with old section count: 1 and new section count: 0'
私はnumberOfSectionsInTableView:
を削除しようとしましたが、突然これらのエラーはなくなりました。私はここで何が起こっているのか分かりませんが、numberOfSectionsInTableView:
に私の条件の周りに間違いがあると思います。
ご協力いただければ幸いです。どうもありがとうございます!
重複をチェックする。これをNSFetchedResultsControllerデリゲートメソッドで処理する必要があります。 NSFetchedResultsControllerは、カスタムセルとセクションを追加しているかどうかを「知りません」。自分のデータを提供するだけで、自分のアカウントからセルとセクションを挿入します。すでにセルとセクションがある場合は、数字が正しくuppを追加せず、クラッシュします。また、** sidenote **なぜ "MyNoDataView"を割り当てて、numberOfSectionsInTableViewにseperatorstylesを設定するのですか?それは本当に悪い習慣です。 –
**編集**重複フラグを削除しました。挿入や削除などの処理方法に関するコードを追加してください。エラーを見つけやすくなります。エラーコードの検索に役立つかもしれません:http://stackoverflow.com/questions/33951169/deleting-the-last-section-of-a-uitableview-causes-an-exception and https://forums.developer .apple.com/thread/9964 –
データビューtbhを作成したいだけです。 MyNoDataViewをどのように割り当てて、テーブルビューの背景として配置する必要があると思いますか?前もって感謝します。 –