Базовые данные (iPhone) - ограничение результатов выборки в отношениях - PullRequest
1 голос
/ 26 ноября 2009

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

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

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

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

1) навязывание каких-либо критериев (например, только покупки свыше 1000 фунтов стерлингов и т. Д.); или

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

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

Заранее спасибо за любые ответы.

Ответы [ 2 ]

2 голосов
/ 26 ноября 2009
  1. Использовать извлеченное свойство
  2. Использование NSFetchedResultsController

Ответ на эти вопросы и вопросы, которые у вас возникнут, даны в Руководстве по программированию базовых данных * для iPhone.

1 голос
/ 26 ноября 2009

Насколько я понимаю, когда вы выбираете объекты пользователя, отношение к его объектам покупки будет ошибкой, которая будет загружена только при обращении к ней.
Вместо этого вы можете получить объекты «Закупки» с предикатом, в котором указаны пользователи и проверки по любым другим критериям.

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

...