Форум программистов, компьютерный форум CyberForum.ru

CoreData: как сохранить только одну entity из множества созданных - Программирование iOS/iPhone

Восстановить пароль Регистрация
 
smth
175 / 44 / 6
Регистрация: 23.06.2011
Сообщений: 243
07.09.2016, 14:29     CoreData: как сохранить только одну entity из множества созданных #1
Добрый день!
Не могу разобраться, как сделать вот что:

При работе приложения на разных этапах создается несколько сущностей (entities), которые, в конце концов, "вкладываются" одна в другую в порядке, обратном созданию. Пример:

Есть сущности A, B, C Все наследуются от NSManagedObject. Все они добавляются в NSManagedObjectContext, созданный в AppDelegate (по эппловским мануалам).

Как оно должно работать:
Сущность A содержит сущность B, B содержит C (в sql это были бы foreign keys, а как корректно в стиле core data сказать - не могу придумать). По ходу выполнения программы сначала создается, но не сохраняется, A, потом также создается B, потом С. После создания C, С сохраняется, добавляется в B, B сохраняется, добавляется в A и после этого A сохраняется.

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

Ни в appcoda, raywenderlich я подобных примеров не нашел. Направьте на путь истинный ) Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2016, 14:29     CoreData: как сохранить только одну entity из множества созданных
Посмотрите здесь:

Как сохранить состояние приложения и восстановить его при следующем запуске
Сравнения sqlite3 и coredata
CoreData , наследование
Objective-C Array в CoreData
CoreData and FetchRequest
Покритикуйте мой метод работы с CoreData
Как сохранить данные при переходе на другой ViewController?
Plist или coredata
Редактирование CoreData
Насколько рационально хранение изображений в CoreData
Как сохранить Array в NSUserDefaults? Swift
Swift CoreData "Список пользователей"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cin_cout
25 / 25 / 7
Регистрация: 06.10.2012
Сообщений: 116
11.09.2016, 14:48     CoreData: как сохранить только одну entity из множества созданных #2
Под CoreData лежит SQLite. Пропишите foreign keys и все отношения в модели данных в CoreData, это же очень удобно в XCode. PersistentStoreCoordinator будет сохранять, если вам надо, те parent/child контексты и в том порядке, в котором зададите.
smth
175 / 44 / 6
Регистрация: 23.06.2011
Сообщений: 243
12.09.2016, 16:44  [ТС]     CoreData: как сохранить только одну entity из множества созданных #3
cin_cout, с этим я, в конце концов, разобрался. А вот с foreign keys, кстати, основная головная боль - имея в двух параллельных child contexts две сущности, я не могу просто взять и добавить одну в другую, чтобы создать связь. Только через objectID. Главное неудобство вызывает то, что, передав objectID в другой MOC, все время думаешь - а что, если этот объект на самом деле не сохранится (ведь сохранения в child context не сохраняются по-настоящему, пока главный MOC не сохранит все)? А его objectID уже передан в другой объект который, в отличие от первого, сохранится... И тут мне недостает знаний и я не могу найти то, что называется "best practice".
noname_club
 Аватар для noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 575
14.09.2016, 15:46     CoreData: как сохранить только одну entity из множества созданных #4
матчасть
https://habrahabr.ru/post/218457/
[ENG] описание синхронной работы с несколькими контекстами дочерние паралельные и тп
http://floriankugler.com/2013/04/29/...ance-shootout/
Yandex
Объявления
14.09.2016, 15:46     CoreData: как сохранить только одну entity из множества созданных
Ответ Создать тему

Метки
core data
Опции темы

Текущее время: 18:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru