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

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
smth
177 / 46 / 6
Регистрация: 23.06.2011
Сообщений: 247
#1

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

07.09.2016, 14:29. Просмотров 729. Ответов 3

Добрый день!
Не могу разобраться, как сделать вот что:

При работе приложения на разных этапах создается несколько сущностей (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 из множества созданных
Посмотрите здесь:

Array в CoreData - Objective-C
Добрый вечер! Как в NSManagedObject хранить массив? Там среди допустимых типов нет массива. Получается, нужно переводить массив в строку, а...

CoreData , наследование - Программирование iOS
Доброе время суток! Такой вопрос. У меня в модели есть объект "Person". Мне нужно составить таблицу из этих объектов, но чтобы каждый...

Редактирование CoreData - Программирование iOS
Здравствуйте. Подскажите как можно редактировать содержимое CoreData? Имеется ввиду не добавление/удаление данных из приложения, а...

CoreData and FetchRequest - Программирование iOS
Hi, столкнулся с проблемкой... Есть БД, юзаю CoreData. В БД есть 2 поля lat,lon - тип данных double. Через визуальный редактор создал...

Plist или coredata - Программирование iOS
Доброго времени суток! В tutorial https://www.youtube.com/watch?v=r6Cn6Kp5ghA&list=PLxqbutB-EOO0WOPOScvFeSkMO0Pw8atiu&index=10 , на 24...

Сравнения sqlite3 и coredata - Программирование iOS
Добрый день уважаемые форумчане. Расскажите пожалуйста о sqlite3 и coredata кто чем пользовался. Что вы выбираете, для каких целей что...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
11.09.2016, 14:48     CoreData: как сохранить только одну entity из множества созданных #2
Под CoreData лежит SQLite. Пропишите foreign keys и все отношения в модели данных в CoreData, это же очень удобно в XCode. PersistentStoreCoordinator будет сохранять, если вам надо, те parent/child контексты и в том порядке, в котором зададите.
smth
177 / 46 / 6
Регистрация: 23.06.2011
Сообщений: 247
12.09.2016, 16:44  [ТС]     CoreData: как сохранить только одну entity из множества созданных #3
cin_cout, с этим я, в конце концов, разобрался. А вот с foreign keys, кстати, основная головная боль - имея в двух параллельных child contexts две сущности, я не могу просто взять и добавить одну в другую, чтобы создать связь. Только через objectID. Главное неудобство вызывает то, что, передав objectID в другой MOC, все время думаешь - а что, если этот объект на самом деле не сохранится (ведь сохранения в child context не сохраняются по-настоящему, пока главный MOC не сохранит все)? А его objectID уже передан в другой объект который, в отличие от первого, сохранится... И тут мне недостает знаний и я не могу найти то, что называется "best practice".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2016, 15:46     CoreData: как сохранить только одну entity из множества созданных
Еще ссылки по теме:

Покритикуйте мой метод работы с CoreData - Программирование iOS
Всем привет! Решил устроить для самообучения серию экспериментов с CoreData, и возникла идея организовать работу с этим фреймворком...

Насколько рационально хранение изображений в CoreData - Программирование iOS
Всем привет! Подскажите, насколько рационально хранить большие изображения напрямую в одном из аттрибутов Entity? С одной стороны...

CoreData "Список пользователей" - Swift
Всем привет! Ребята, подскажите, как дополнить мою программу, чтобы пользователю, например, User1 соответствовал добавленный asset1,...

Как сохранить Array в NSUserDefaults? - Swift
Всем доброго дня! Помогите пожалуйста сохранить array с чекмарками в NSUserDefaults с последующим его чтением. Пишу на swift var...

Как сохранить данные при переходе на другой ViewController? - Программирование iOS
у меня есть два вьюконтроллера на первом: кнопка перехода на второй вьюконтроллер (связь modal), лэйбл и кнопка изменяющая лэйбл на...

Как сохранить состояние приложения и восстановить его при следующем запуске - Программирование iOS
Здравствуйте! Я использую <NSCoding>, реализую необходимые методы, сохраняю в файл типа plist, в application...


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

Или воспользуйтесь поиском по форуму:
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583
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 из множества созданных
Ответ Создать тему
Опции темы

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