2012-04-14 6 views
0

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

Вот грубый набросок того, что я имею в Основном модели данных до сих пор:
Entities (атрибуты):
Фотографии (идентификатор, название, убывание, путь к файлу)
Ключевые слова (ID, имя)

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

ответ

1

Это правильно. Существует несколько способов доступа к этому, но наиболее простым способом является создание подклассов NSManagedObject (Редактор-> Создать подкласс NSManagedObject ...). При заполнении ими объекта Photo отношения ключевого слова будут заполнены в свойстве, называемом ключевыми словами.

3

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

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