Сбой UITableViewController при удалении строки, потому что ячейка рисует и получает доступ к данным ядра - PullRequest
0 голосов
/ 10 октября 2010

У меня есть UITableViewController, поддерживаемый NSFetchedResultsController.

Я сейчас испытываю SIGABRT при удалении строки, после сохранения managedObjectContext в commitEditingStyle.

Сбой затем происходит в drawRect: в моем UITableViewCell, где он пытается получить доступ к объекту основных данных для этой строки:

[self.document.name drawAtPoint:...]

Исключение SIGABRT:

<0x7f883f0 DocumentListControllerCell.m:(108)> CoreData could not fulfill a fault 
for '0x7f2a600 <x-coredata://A71C21B4-FE2A-4D1B-A76F-A2AB80E4814C/Document/p16>'

Конечно, проблема в том, что объект CoreData был удален и больше не доступен. Интересно, почему drawRect все еще вызывается для этой клетки.

Буду признателен за любую помощь!

Ответы [ 2 ]

0 голосов
/ 10 октября 2010

Я вижу одно решение, но я хотел бы знать, если это правильный способ решить эту проблему.

В настоящее время проблема заключается в том, что drawRect в ячейке обращается к «документу» CoreData, который был удален, чтобы получить имя документа и нарисовать его. Вместо этого я могу кэшировать имя документа в строке в setDocument и напрямую обращаться к этой строке.

Кажется, это был бы правильный способ сделать это. Может ли кто-нибудь подтвердить, что я не должен обращаться к объекту Core Data в drawRect?

0 голосов
/ 10 октября 2010

при удалении строки также одновременно удаляйте ее из основных данных, чтобы не было избыточных данных, которые рисуются.Много раз случалось со мной, когда я удалял что-то из таблицы, но не из того места, где я извлекал данные, и это приводило к сбою моего приложения, так как оно правильно рисовало бы таблицу при вызове стиля endcommit.Так что просто внесите эти изменения, и все должно быть в порядке PK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...