CoreData - ко многим отношениям

Я начинаю использовать Core Data и пытаюсь понять, как это будет работать в моем случае. Я создаю приложение для фотоальбома для iPad, которое позволит пользователям фильтровать свои результаты на основе ключевых слов и пары других атрибутов, связанных с каждой фотографией. Атрибуты будут базовыми вещами, такими как ориентация и цвет или нет. Ключевые слова будут основываться на наборе определенных значений, из которых пользователь должен будет выбирать.

Вот примерный план того, что у меня есть в Core Data Model:
Объекты (атрибуты):
Фотографии (id, title, desc, путь к файлу)
Ключевые слова (идентификатор, имя)

Поскольку с фотографией может быть связано несколько ключевых слов, нужно ли мне создать связь из «Фотографии» с назначением «Ключевые слова» и сделать ее связью «-ко многим»? Это правильно/безумно/совершенно неправильно? Как мне добавить/получить записи для этих отношений?


person ChickensDontClap    schedule 14.04.2012    source источник


Ответы (2)


Это верно. Существует несколько подходов к доступу к этому, но самый простой способ — создать подклассы NSManagedObject (Editor->Create NSManagedObject Subclass...). При заполнении объекта «Фото» отношение «Ключевое слово» будет заполнено в свойстве, называемом ключевыми словами.

person Joseph DeCarlo    schedule 14.04.2012

Если ключевые слова определены и пользователь может выбрать их из определенного списка, я бы не использовал ключевое слово сущности. Совет: всегда используйте имена в единственном числе (фото, ключевое слово). У меня были бы ключевые слова в списке, и пользователь выбрал бы несколько, затем вы могли бы создать строку, разделенную запятыми, чтобы сохранить ее как свойство на фотографии. Как упоминал Джозеф, вы хотите создать подкласс NSManagedObject, и я бы добавил метод, который получает строку (ключевое слово) и возвращает BOOL, указывающий, было ли это ключевое слово частью значений ключевого слова, разделенных запятыми, в свойстве Photo

person Daniel    schedule 14.04.2012