deleted-mezhevikin
@deleted-mezhevikin

Как правильно работать c временными данными в CoreData?

Есть приложение с двумя UITableViewController — FirstViewController и SecondViewController.

В моделях одна сущность People.


В FirstViewController выводятся все данные из People (постоянное хранилище).

В SecondViewController данные загружаются с с севрера в виде json, из json формируется массив сущностей People и они так же выводятся.

По клику ячейки SecondViewController запись(только выбранная) должна сохраняться в постоянное хранилище.


Я пробовал делать разные NSManagedObjectContext для FirstViewController и SecondViewController, но оказалось что нельзя переводить объект NSManagedObject из одного контекста в другой.


Сейчас я в SecondViewController из json формирую массив NSDictionary объектов, по клику уже перевожу его в NSManagedObject и сохраняю.

Получается некая разнородность работы с данными.

Можно решить эту задачу другим способом?
  • Вопрос задан
  • 3063 просмотра
Решения вопроса 1
deleted-mezhevikin
@deleted-mezhevikin Автор вопроса
Нашел рабочее решение моего вопроса.
Решение заключается в воссоздании NSManagedObject в новом контексте, т.е создается новый пустой объект в него копируются аттрибуты и связи.
Ранее я находил подобное решение в одной книге, но оно некорректно работало с NSManagedObject со множенстов связанных объектов.

На первый взгляд данное решение вполне быстро и адекватно работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Flanker_4
@Flanker_4
А зачем Вы временные объекты заносите в хранилище.
Почему бы не держать их просто в памяти, а после выбора пользователем вносить только выбранный?
Ответ написан
hybridcattt
@hybridcattt
Если такой вариант подойдет, правильнее всего будет не создавать сущности при отображении таблицы в SecondViewController, а сделать источником для таблицы распарсенные данные из json. При выборе пользователем какой-то строки, создавать один NSManagedObject в нужном контексте и сохранять его.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы