2016-07-02 2 views
2

Я создал простое приложение, которое извлекает некоторые JSON и хранит данные внутри Core Data.CoreData: error: Мутирование управляемого объекта после его удаления из его контекста

После первоначальной установки на тренажере или устройстве, все операции Основные данные являются тонкие, но при повторном пробеги, я получаю следующее сообщение об ошибке (ы):

2016-07-02 13:23:53.925 En Yakın[84775:5379467] CoreData: error: Mutating a managed object 0x79736290 <x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42> (0x79736250) after it has been removed from its context. 

Там нет ничего плохого визуально. Все данные представлены как ожидалось, а функции приложения.

Я отладил проблему. Если я закомментирую функцию извлечения JSON и сделаю приложение использующим то, что находится внутри Core Data после первого запуска, сообщения об ошибках не отображаются. Но повторное извлечение приложения вызывает недоразумение с моим базовым стеком данных (реализованным как объект singleton).

Как мне изменить реализацию основных данных?

Update

Я считаю, что я отслеживал проблему это ядро. Я сохраняю миниатюры примерно 6 КБ, которые я загрузил. Я узнал, что сохранение изображений приведет к поражению производительности Core Data. Но миниатюры такого размера тоже проблематичны? Если я удалю присвоение изображения сущности, ошибки исчезнут. Должен ли я хранить их внутри файловой структуры?

+0

Я полагаю, что вы отключили отношения при обработке JSON, правило удаления удаляет что-то, и вы не обновляете пользовательский интерфейс полностью?!? – Wain

+0

@Wain посмотрите пожалуйста, обновите вопрос –

ответ

2

Ошибка интересно:

<x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42>

Обратите внимание на нижний регистр t перед GUID. Это означает, что этот объект является новым и не был сохранен. Следовательно, если вы не выбрасываете несохраненный контекст управляемого объекта после каждого использования, полностью действующей стратегии, у вас есть несоответствие состояния.

Простой способ решить вашу проблему состоит в том, чтобы либо выпускать более save или работать в контексте ребенка, который вы выбрасываете перед каждой новой выборкой.

+0

... смотрите –