Основные данные простые отношения в коде - PullRequest
3 голосов
/ 24 июля 2009

Я новичок в какао, пытаюсь создать приложение для iPhone, включающее Core Data.

Моя проблема заключается в следующем: у меня запущено небольшое приложение с единственным объектом под названием Playlist, который я отображаю в виде таблицы иможно добавлять и удалять записи в.

У меня они есть в моем PlayerAppDelegate:

playlistManagedObjectModel

playlistListManagedObjectContext

playlistListPersistentStoreCoordinator

1012 с сущностью:
Playlist *playlist = (Playlist *)[NSEntityDescription
    insertNewObjectForEntityForName:@"Playlist" 
             inManagedObjectContext:playlistListManagedObjectContext];

Теперь я хочу добавить подуровень Song с отношением ко многим.

Добавлен атрибут списка воспроизведения: songRelation Добавлен атрибут песни: playlistRelation

Я создал эту сущность и настроил отношения в обе стороны, щелкнув опциональный флаг, так как я хочу, чтобы по крайней мере одна песня вa Playlist.

После установки этого отношения я больше не могу создавать плейлист без предупреждения. Проблема в том, что «он» тоже хочет создать песню, но я не знаю, как.

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

Нужно ли создавать их:

songManagedObjectModel
songListManagedObjectContext
songListPersistentStoreCoordinator

или объект сущности Песня доступен через сущность списка воспроизведения?

Возможно, что-то подобное:

Добавить плейлист

Добавить песню

Установить атрибуты "отношения" (как?)

Сохранить в постоянном хранилище

Или ????

Я действительно много гуглил и, вероятно, неправильно понял что-то базовое здесь, поскольку нет доступных примеров ....

Rgds PM

1 Ответ

7 голосов
/ 24 июля 2009

Petter,

В объекте модели PlayList должен быть метод, который выглядит примерно так:

- (void) addSongObject:(Song *)value;

Это динамически генерируемый метод, который вставляет значение Song в отношениедля песен в плейлисте. Если вы не создали объект модели PlayList с момента добавления отношения Song, этого метода не будет. Поэтому убедитесь, что вы генерируете классы моделей для любых измененных объектов.

Объект Song, передаваемый методу addSongObject, должен быть создан с использованием ManagedObjectContext, например:

Song *song = (Song *)[NSEntityDescription insertNewObjectForEntityForName:@"Song" inManagedObjectContext:playlistListManagedObjectContext];

Jack

...