Сводка: у меня есть два разных представления, которые используют таблицы для отображения результатов из выбранного контроллера результатов.Эти таблицы могут содержать те же данные .Я получаю ошибки при перемещении строк в одной таблице после загрузки другой таблицы.(Полагаю, очевидно!)
Для упрощения представьте, что сущность состоит из стран, а другая сущность объединяет эти страны в группы стран.У нас есть представление «editSet», которое позволяет вам называть набор, добавлять или удалять страны в наборе, а также изменять их порядок, используя стандартный пользовательский интерфейс.Затем у нас есть представление «viewSet», которое показывает вам эти страны и некоторую стоимость, связанную с ними (например, обменный курс или что-то еще).
Теперь, в представлении редактирования, когда мы изменяем порядок и вызывается moveRowAtIndexPath, яустановить BOOL, который останавливает любые дальнейшие изменения пользовательского интерфейса, пока coredata не будет обновлен (каждая запись имеет целочисленное значение displayOrder, которое я обновляю перед выполнением другого executeSearch).Все это прекрасно работает, если вы только создали экземпляр представления «editSet».
Если что-то пойдет не так, если вы загрузите «viewSet», затем загрузите «editSet» с тем же набором и переместите строки.BOOL, который мы устанавливаем в editSet, не передается viewSet (который также «наблюдает» за coredata) и расстраивается, когда coredata изменяется программно.Это генерирует:
Serious application error. An exception was caught from the delegate of
NSFetchedResultsController during a call to -controllerDidChangeContent:
. *** -[NSMutableArray removeObjectAtIndex:]:
index 0 beyond bounds for empty array with userInfo (null)
И все разрывы ада теряются.
С другой стороны, если я загружаю / показываю «viewSet» с РАЗЛИЧНЫМ НАБОРОМ для того, который я редактирую, проблем нет.
Итак, что мне нужно сделать, это ЛИБО "отключить" FRC и таблицу при выходе из viewSet (возможно, выполнить поиск по пустому адресу и перезагрузить таблицу?) ИЛИ передать BOOL в viewSetController при сохранениипереместил строки в coredata в editSet, чтобы имитировать то, что я делаю локально в этом viewcontroller (не совсем уверен, как это сделать, но я думаю, выполнимо).
Я уверен, что я не первый, кто столкнулся с этой проблемой, поэтомуинтересно, как лучше?