2009-11-25 2 views
1

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

Давайте представим, что у меня есть пользователя модель объекта с отношения ко многим с покупки объекта. A Пользователь может иметь тысячи покупок.

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

Очевидно, я предпочел бы, если бы был какой-то способ, чтобы ограничить количество Покупка объектов, извлекаемых с помощью:

1) навязывание какой-то критериев (например только покупки свыше £ 1000 и т.д.); или

2) только выборка партиями, если вышеуказанное невозможно.

Возможно ли это? Я просто обеспокоен тем, что с ограниченной памятью iPhone я рискую перегрузить его тысячами ненужных объектов.

Заранее благодарим за любые ответы.

ответ

1

Мое понимание заключается в том, что при извлечении объектов пользователя связь с его объектами Purchase будет ошибкой, которая будет загружаться только при доступе.
Вместо этого вы можете выбрать объекты Покупки с предикатом, который определяет Пользователь (ы) и проверку (ы) по любым другим критериям.

Тем не менее, я бы определенно испытал реалистичные варианты использования (на устройствах), прежде чем тратить слишком много времени на проблемы с производительностью. Эффективность iPhone и Core Data может удивить вас.

+0

Не уверен, что я должен открыть новый вопрос, основываясь на вашем ответе, поэтому сначала спрошу: 1) Как только ошибка покупки увольняется, означает ли это, что каждый объект Purchase для этого пользователя также загружается? 2) Если я использую предикат вместо этого, не полагаюсь ли вообще на отношения User - >> Purchase и вместо этого используйте другое поле для связывания пользователя с его покупками и совершенно другого запроса на выборку? – BoltClock

+0

Не уверен. Возможно, стоит открыть новый вопрос, если вы еще не просмотрели Руководство по программированию основных данных (связанное с ответом Барри Уорка). – gerry3

2
  1. Используйте сгружен свойство
  2. Используйте NSFetchedResultsController

Ответ на эти и вопросы, которые вы будете иметь следующий отвечают в Core Data Programming Guide для iPhone.

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