2015-12-30 3 views
0

Получение реальной странной ошибки. У меня есть контроллер просмотра B, который извлекает массив объектов из CoreData. Когда я рассчитываю и печатаю результаты, он соответствует моим исключениям из числа основных объектов данных.Основные данные, возвращающие дополнительный массив значений nill

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

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

Проблема заключается в том, что я использую извлеченные данные ядра, чтобы заполнить таблицу, поэтому количество строк отключено на единицу, и, поскольку nil, несколько необязательных объектов в моих ячейках не разворачиваются, так как они не ожидают нуля, и поэтому получение сбоев.

Пробовал context.reset() в начале контроллера представления В.

даже не уверен, что, чтобы показать всем для кода. Не имеет смысла для меня. Я сделал отладочное пошаговое руководство контроллера B и не сохраняю никаких записей в основных данных.

Как я уже упоминал, иногда перевертывание назад и вперед в контроллер основного вида и контроллер просмотра b иногда он возвращает дополнительные результаты, иногда он исчезает, и в конце концов он попадает и возвращает нуль и падает.

Мысли?

+0

Можете ли вы опубликовать код, который вы используете, для извлечения в контроллере B и в главном контроллере. – greentor

+0

будет делать, когда я смогу. Я нашел другой элемент, может быть, потому что операция не завершена. Когда я нажимаю кнопку «Назад» на навигационном контроллере, пока результаты были получены, это вызвало добавление всех нулевых записей в основные данные. Так что, возможно, в предыдущем выпуске результаты не были полностью завершены. – TravelNVal

ответ

0

Для этих ha в этой проблеме ознакомьтесь с контекстом управляемого объекта через точку останова непосредственно перед сохранением. Моя проблема состояла в том, что после извлечения основной записи данных для изменения я создал экземпляр вставки, вызвав управляемый объект: insertinto. Поэтому, когда я пошел на сохранение, я проверил точку останова, и контекст обновил запись, а также ввел ее. Поэтому, удалив вставку, я просто обновил полученный результат.

+0

Я согласен с этим ответом, он правильный, и в качестве теста вы можете перейти в sqlite DB приложения. Перейдите к /Пользователи//Библиотека/Разработчик/CoreSimulator/Devices//data/Containers/Data/Применение/ /Documents/SingleViewCoreData.sqlite. , и вы увидите фактическое количество записей в БД, как ожидается, ведьма означает, что запись дополнительных нулей появилась только в функции выбора, она не вставлена. – IsPha

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