У меня есть TableView, который заполняет данные, извлеченные из NSFetchedResultsController.Однако приложение просто перестает отвечать, когда пользователь слишком быстро выполняет прокрутку в представлении таблицы (обычно в нижней части таблицы).
Xcode отображает точку останова в
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
в строке, где я назначаю атрибуты ячейки:
cell.name.text= [Person firstName: speaker.firstName иLastName: speaker.lastName];(ячейка - PersonStyleCell, подкласс UITableViewCell).
EDIT
Дурачиться со свойством состояния ошибки NSManagedObject, теперь я получаю ошибку:
CoreData could not fulfill a fault for '0x37f8f0
Опять же, приложение падает только тогда, когда пользователь слишком быстро прокручивает UITableView.
Есть идеи, почему происходит сбой приложения?Нет утечек памяти, и я только освобождаю NSFetchedResultsController Objects в методе dealloc.В чем может быть проблема?
Я понял, что:
([(Person*)[self.personArray objectAtIndex:[indexPath row]] faultingState] == 0)
проверит, являются ли данные, хранящиеся в NSManagedObject, ошибочными (т.е. еще не «загружены»), и я думаю,проблема в том, что он пытается установить атрибуты ячейки с данными, которые еще не доступны.
Размещение функции «установить атрибуты ячейки» в операторе if, который выполняет установку атрибутов ячейки только в том случае, если данные не являются ошибочными, похоже, исправляет сбой, но данные не отображаются (я думаю, когда они инициализируютсяданные для всех объектов устанавливаются как «ошибка»
Могу ли я использовать это свойство состояния ошибки, чтобы дождаться загрузки данных перед установкой атрибутов ячейки? Если да, то как?
Надеюсь, эта информация значительно упростила мой вопрос