Я использую NSFetchedResultsController
в моем представлении таблицы, и он отлично работает. Моя проблема заключается в том, что я хочу создать «no data view», когда _fetchedResultsController
имеет 0 строк.Нет просмотра данных в таблицеView с использованием NSFetchedResultsController
Я пытался создать его в моем 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;
}
}
Он работал большой. Если данных еще нет, он не отображает данные, и если есть данные, они будут показывать мое табличное представление.
Проблема возникает, когда я делаю удаление в своей строке. Технически, я просто обновить свои свойства объекта (isActive
) моим fetchRequest
в fetchedResultController
с помощью этого NSPredicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isActive == %@ ", @YES];
[fetchRequest setPredicate:predicate];
Тогда, если есть только одна строка, и я удалить его, я получаю эту ошибку
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» и устанавливаете стили seperator в numberOfSectionsInTableView? Это действительно очень плохая практика. –
** EDIT ** Я удалил дубликат. Предоставьте больше кода о том, как вы обрабатываете вставки и удаления и т. Д. Таким образом, мы можем легче найти ошибку. Возможно, это поможет вам найти код ошибки: http://stackoverflow.com/questions/33951169/deleting-the-last-section-of-a-uitableview-causes-an-exception и https: //forums.developer .apple.com/thread/9964 –
Я просто хочу создать не просмотр данных tbh. Итак, как вы думаете, я должен выделить MyNoDataView и поместить его в качестве фона таблицы? Заранее спасибо. –