2013-11-13 5 views
0

Я сделал отношения «многие ко многим». Сначала я вставляю все данные в таблицу 1, остальные данные недоступны сразу.iOS Core data issue

Когда данные доступны, я хотел бы подключить их к правой таблице 1 записи. Должен ли я запрашивать таблицу 1, а затем установить NSSet с возвращенными данными? Или как это сделать?

Выработать свой вопрос здесь пример:

[ActivityTable] < < --- >> [BannerTable]

В viewDidLoad всей деятельности upserted в ActivityTable. Затем с сервера отображаются баннеры с первого действия (первая наступающая дата).

Я получил два (это всегда два) баннера, но как это установить?


Используется это с помощью ответа:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Banner" inManagedObjectContext:context]; 
Banner *banner = [[Banner alloc] initWithEntity:entity insertIntoManagedObjectContext:context]; 
banner.image = shieldDictionary[BANNER_IMAGE]; 
+0

Весьма бесполезно думать о Core Data в терминах (предположительно, концепции RDBMS) таблиц. –

+0

@JohnCromartie Понял, что сейчас, и это помогает понять концепцию основных данных, чтобы НЕ думать о Rational Database, Спасибо – Haagenti

ответ

0

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

В модели CoreData каждое отношение имеет имя. Сгенерированные классы сущностей уже содержат методы добавления/удаления отношений, определенных в модели. Итак, все, что вам нужно сделать, это использовать один из этих методов.

Пример: Если таблицы называются «ActivityTable» и «BannerTable», и отношения в «ActivityTable» называется «баннеры», то сгенерированные методы выглядеть следующим образом:

- addBannersObject:(BannerTable *)value; 
- removeBannersObject:(BannerTable *)value; 
- addBanners:(NSSet *)value; 
- removeBanners:(NSSet *)value; 
+0

Да, вы можете использовать возвращенные объекты напрямую. – Leijonien

0

основных данных управляет график объектов, а не таблиц.

Самый простой способ реализовать отношения «многие ко многим» - использовать динамически созданные аксессоры, такие как add<Key>Object: и remove<Key>s:.

Например:

[anActivity addBannerObject:aBanner]; 

Вы можете использовать редактор модели данных для создания файлов класса для моделей, которые декларируют эти сгенерированные методы. Вы также можете использовать -mutableSetValueForKey:, чтобы получить прокси-сервер, который позволяет добавлять и удалять объекты из отношений. т.е .:

NSMutableSet *banners = [anActivity mutableSetValueForKey:@"banners"]; 
[banners addObject:aBanner]; 

Это, очевидно, менее многословным использовать сгенерированные методы для каждого отношения, но это достигается то же самое.

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