2013-08-08 4 views
0

У меня есть проект Xcode с единым Entity in Core Data («Item») и настроил рефлексивные отношения, чтобы каждый элемент мог иметь отношение ко многим другим элементам. Я установил отношения в соответствии с документацией (либо две связи, либо одна, которая является обратной для себя, является законной, я использую последнюю), и все работает чудесно, пока я не удалю элемент, который имеет отношения с другой предмет. Если я выберу правило удаления «Каскад» для отношения, нет сбоя, и вся функциональность будет вести себя так, как ожидалось. Если я использую правило удаления Nullify, тем не менее, тот, который я действительно хочу использовать, я получаю сбой.Удалить правила с рефлексивными отношениями

Я предполагаю, что, хотя я использую рефлексивные отношения, при удалении элемента, Core Data проходит и устанавливает все ссылки на этот элемент в другом конце всех отношений на нуль. Или мне нужно связаться с ним и сделать это вручную? Я думаю, что мне не придется этого делать.

Возможно, это проблема с «порядком операций» с помощью FetchedResultsController?

У меня совершенно нет идей по этому вопросу. Из-за проблем Apple за последние пару недель я не смог получить от них поддержку.

Я не размещал код, потому что его много, и большая часть его - это шаблон шаблона/котельного таблички в любом случае для этого простого примера тестирования, который я строю.

+1

У вас есть петля в рефлексивных отношениях? –

+0

Спасибо за ответ. Нет, нет циклов, использующих мои отношения. –

ответ

0

Update:

После дополнительной проверки и регистрации, Core Data и правило удаления не проблема. «Nullify» работает так же, как и после удаления объекта, с любыми отношениями, которые могут иметь объекты. Проблема заключается в получаемом контроллере результатов.

Должно быть ссылка на объект, который не освобождается. Кроме того, когда создается связь. Это связано с отношениями, потому что, если нет отношения, объект всегда удаляется без проблем.

С контрольной точкой исключения, она разбивается на configureCell: когда он пытается получить доступ к объекту fetchedResultsController по определенному пути индекса.

NSManagedObject * object = [self.fetchedResultsController objectAtIndexPath: indexPath];

Без брейкпойнте исключение, я получаю ошибку:

CoreData: ошибка: Серьезные ошибки приложения. Исключение было обнаружено во время обработки изменений Core Data. Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification. * - [_ PFBatchFaultingArray objectAtIndex]: индекс (3) за границы (3) с USERINFO (нуль)

Если я комментирую весь код из configureCell: клетки будут отображаться неправильно, но я не могу 't получить его к сбою. Все работает отлично.

Вздох.

Смежные вопросы