Руководство по CoreData - PullRequest
       1

Руководство по CoreData

0 голосов
/ 04 ноября 2010

Итак, у меня есть проблема, которую я пытаюсь решить - интересно, кто-нибудь может прокомментировать / помочь мне с подходом Дело в том, что у меня это частично решено, но с остальным я не совсем уверен.

Вот сделка:

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

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

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

У меня проблема с тем, как их классифицировать и как сохранить данные категории. Существует основная категория, то есть Hi-Fi, которая имеет несколько подкатегорий - скажем, «стерео», «тюнер», «телефон» и т. Д.

Как лучше всего сохранить эту информацию, чтобы у категории а было 15 подкатегорий, а у каждой из этих категорий в свою очередь было 30 продуктов, обеспечив при этом производительность и минимальное время обработки. Я не хочу проверять все 2000 продуктов, нужно ли показывать их в определенном табличном представлении каждый раз, когда я открываю новое табличное представление.

Любые намеки на помощника приветствуются.

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

Вам понадобятся две сущности: Product и Category.

Category имеет отношение ко многим, называемое subcategories, с целевым объектом Category. Обратное соотношение можно назвать parentCategory. Category также имеет отношение ко многим, называемое products. Product будет иметь обратную связь, называемую category (или categories, если продукт может принадлежать нескольким категориям)

Теперь вы можете получить все продукты для данной категории, проверив свойство products. Если вы хотите включить все продукты в подкатегории, вы можете сделать запрос на выборку с помощью предиката, подобного следующему:

[NSPredicate predicateWithFormat:@"category == %@ OR category IN %@", category, category.subcategories];
0 голосов
/ 04 ноября 2010

Я думаю, что вы можете решить эту проблему, имея модальную модель Core Data, состоящую из трех объектов: Product, Category и SubCategory.

Product имеет категорию отношений с категорией назначения и подкатегорию отношений с подкатегорией назначения.*

Категория имеет продукты со многими связями с конечным продуктом и подкатегориями отношения со многими со подкатегорией назначения.

Подкатегория имеет продукты со многими связями с целевым продуктом и категорию отношений с категорией назначения..

При определении этих отношений не забудьте также назначить обратные отношения.

Теперь вы получаете список всех продуктов, относящихся к определенной категории, просто загружая соответствующую категорию и открывая свойство products.Также должно быть возможно использовать NSFetchRequest для Product с предикатом, указывающим, какую категорию вы хотите.Что лучше в отношении производительности и требований к памяти, я не могу сказать, поэтому вам просто нужно проверить, какой подход работает лучше всего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...