Базовые данные (iPhone) - ограничение результатов выборки в отношениях
-
05-07-2019 - |
Вопрос
Недавно я просматривал базовые данные для iPhone, и у меня есть один запрос, на который я не смог найти ответ в литературе.
Давайте представим, что у меня есть объект модели Пользователь с отношением "многие-многие" с объектом Покупка . Пользователь может совершить тысячи покупок.
Похоже, что вся информация, которую я до сих пор видел, предполагает, что операция выборки, выполненная для этого отношения, вернет NSSet со всеми объектами Покупка , связанными с конкретным пользователем . Р>
Я бы предпочел, если бы был какой-то способ ограничить количество покупок объектов, выбираемых с помощью:
1) навязывание каких-либо критериев (например, только покупки свыше & # 163; 1000 и т. д.); или р>
2) выборка производится только партиями, если вышеописанное невозможно.
Возможно ли вышеизложенное? Я просто обеспокоен тем, что из-за ограниченной памяти iPhone я рискую перегрузить его тысячами ненужно извлеченных объектов.
Заранее спасибо за любые ответы.
Решение
Насколько я понимаю, когда вы выбираете объекты пользователя, связь с его объектами покупки будет ошибкой, которая будет загружена только при обращении к ней.
Вместо этого вы можете получить объекты «Закупки» с предикатом, в котором указаны пользователи и проверки по любым другим критериям. Р>
Тем не менее, я бы определенно протестировал реалистичные варианты использования (на устройствах), прежде чем тратить слишком много времени на проблемы с производительностью. Эффективность iPhone и Core Data может вас удивить.
Другие советы
NSFetchedResultsController
Ответы на эти и последующие вопросы вы найдете в Руководство по программированию основных данных для iPhone.