NSFetchRequest
Экземпляр NSFetchRequest
описывает критерии поиска, используемые для получения данных от персистентного хранилища.
Экземпляр собирается, критерии должны были выбрать, и — дополнительно — упорядочивают группу управляемых объектов или данные о записях, сохраненных в персистентном хранилище. Запрос выборки должен содержать описание объекта (экземпляр NSEntityDescription
) это указывает который объект искать. Это часто также содержит:
Предикат (экземпляр
NSPredicate
) это указывает, какие свойства выбрать и ограничения на выбор, например “фамилия начинается с ‘J’” . Если Вы не указываете предикат, то все экземпляры указанного объекта выбраны (подвергающийся другим ограничениям, посмотритеexecuteFetchRequest:error:
для полного изложения).Массив дескрипторов вида (экземпляры
NSSortDescriptor
) это указывает, как возвращенные объекты должны быть упорядочены, например фамилией тогда именем.
Можно также указать другие аспекты запроса выборки — максимальное количество объектов, которые запрос должен возвратить, и к каким хранилищам данных запрос должен получить доступ. С OS X v10.5 и позже можно также указать, например, возвращает ли выборка управляемые объекты или просто идентификаторы объектов, и заполняются ли объекты полностью с их свойствами (см. resultType
, includesSubentities
, includesPropertyValues
, и returnsObjectsAsFaults
). С OS X v10.6 и позже и на iOS, можно далее указать, например, что свойства выбрать, смещение выборки, и соответствует ли, когда выборка выполняется, это против в настоящее время несохраняемых изменений в контексте управляемого объекта (см. resultType
, propertiesToFetch
, fetchOffset
, и includesPendingChanges
). Можно также выбрать отличные значения свойств и значения атрибута, удовлетворяющие заданную функцию, как проиллюстрировано в Базовых Отрывках Данных.
Вы используете NSFetchRequest
объекты с методом executeFetchRequest:error:
, определенный NSManagedObjectContext
.
Вы часто предопределяете запросы выборки в модели управляемого объекта —NSManagedObjectModel
обеспечивает API для получения сохраненного запроса выборки по имени. Сохраненные запросы выборки могут включать заполнителей для подстановки переменных, и тем самым служить шаблонами для более позднего завершения. Шаблоны запроса выборки поэтому позволяют Вам предопределять запросы с переменными, которыми заменяют во время выполнения.
Наследование
-
NSObject
-
NSPersistentStoreRequest
-
NSFetchRequest
-
NSObject
-
NSPersistentStoreRequest
-
NSFetchRequest
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSCopying
-
NSObject
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает запрос выборки, сконфигурированный с данным именем объекта.
Объявление
Objective C
+ (NSFetchRequest *)fetchRequestWithEntityName:(NSString *)
entityName
Параметры
entityName
Имя объекта для выборки.
Возвращаемое значение
Запрос выборки, сконфигурированный для выборки использования названного объекта
entityName
.Обсуждение
Этот метод обеспечивает удобный способ сконфигурировать объект для запроса выборки, не имея необходимость получать
NSEntityDescription
объект. Когда выборка выполняется, запрос использует контекст управляемого объекта для нахождения объекта с именем. Модель, связанная с персистентным координатором хранилища контекста, должна содержать названный объектentityName
.Оператор импорта
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Инициализирует запрос выборки, сконфигурированный с данным именем объекта
Объявление
Swift
convenience init(entityName
entityName
: String)Objective C
- (instancetype)initWithEntityName:(NSString *)
entityName
Параметры
entityName
Имя объекта для выборки.
Возвращаемое значение
Запрос выборки, сконфигурированный для выборки использования названного объекта
entityName
.Обсуждение
Этот метод обеспечивает удобный способ сконфигурировать объект для запроса выборки, не имея необходимость получать
NSEntityDescription
объект. Когда выборка выполняется, запрос использует контекст управляемого объекта для нахождения объекта с именем. Модель, связанная с персистентным координатором хранилища контекста, должна содержать названный объектentityName
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
entityName entityName
СвойствоИмя объекта запрос сконфигурировано для выборки. (только для чтения)
Объявление
Swift
var entityName: String? { get }
Objective C
@property(nonatomic, readonly, strong) NSString *entityName
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Объект указан для получателя.
Объявление
Swift
var entity: NSEntityDescription?
Objective C
@property(nonatomic, strong) NSEntityDescription *entity
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
includesSubentities includesSubentities
СвойствоБулево значение, указывающее, включает ли получатель подобъекты в результаты.
Объявление
Swift
var includesSubentities: Bool
Objective C
@property(nonatomic) BOOL includesSubentities
Обсуждение
YES
true
если запрос будет включать все подобъекты объекта для запроса, иначеNO
false
. Значение по умолчаниюYES
true
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Предикат получателя.
Объявление
Swift
var predicate: NSPredicate?
Objective C
@property(nonatomic, strong) NSPredicate *predicate
Обсуждение
Предикат используется для ограничения выбора объектов, которые должен выбрать получатель. Для больше о предикатах, см. Руководство по программированию Предиката.
Если предикат пуст — например, если это
AND
предикату, чей массив элементов не содержит предикатов — получатель, установили его предикат вnil
. Для больше о предикатах, см. Руководство по программированию Предиката.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
fetchLimit fetchLimit
СвойствоПредел выборки получателя.
Обсуждение
Предел выборки указывает максимальное количество объектов, которые запрос должен возвратить, когда выполняется.
Специальные замечания
При установлении предела выборки платформа прилагает максимальное усилие, но не гарантирует, для повышения эффективности. Для каждой объектно-ориентированной памяти кроме хранилища SQL запрос выборки, выполняемый с пределом выборки в действительности просто, выполняет неограниченную выборку и выбрасывает добровольное для строк.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
См. также
-
fetchOffset fetchOffset
СвойствоСмещение выборки получателя.
Обсуждение
Значение по умолчанию
0
.Эта установка позволяет Вам указывать смещение, при котором строки начнут возвращаться. Эффективно, запрос перескочит через конкретное количество соответствия записей. Например, учитывая выборку, которая обычно возвращалась бы
a, b, c, d
, указание смещения 1 возвратитсяb, c, d
, и смещение 4 возвратит пустой массив. Смещения проигнорированы во вложенных запросах, таких как подзапросы.Это может использоваться для ограничения рабочего набора данных. В сочетании с
fetchLimit
, можно создать поддиапазон произвольного набора результатов.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
fetchBatchSize fetchBatchSize
СвойствоОбъем партии получателя.
Обсуждение
Значение по умолчанию
0
. Объем партии0
обрабатывается как бесконечный, который отключает пакет, дающий сбой поведение.При установке ненулевого объема партии набор объектов возвратился, когда выборка выполняется, повреждается в пакеты. Когда выборка выполняется, весь запрос оценен, и идентификационные данные всех соответствующих объектов зарегистрированы, но не больше, чем
batchSize
данные объектов будут выбраны от персистентного хранилища за один раз. Массив, возвращенный из выполнения запроса, будет объектом прокси, прозрачно дающим сбой пакеты по требованию. (В условиях базы данных это - курсор в памяти.)Можно использовать эту функцию для ограничения рабочего набора данных в приложении. В сочетании с
fetchLimit
, можно создать поддиапазон произвольного набора результатов.Специальные замечания
В целях потокобезопасности необходимо полагать, что прокси массива возвратился, когда выборка выполняется как принадлежавший контексту управляемого объекта, запрос выполняется против, и обработайте его, как будто это был управляемый объект, зарегистрированный в том контексте.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
affectedStores affectedStores
СвойствоПерсистентные хранилища указаны для получателя.
Объявление
Swift
var affectedStores: [AnyObject]?
Objective C
@property(nonatomic, strong) NSArray *affectedStores
Обсуждение
Содержание массива является идентификаторами для хранилищ, которые будут искаться, когда выполняется запрос выборки.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
sortDescriptors sortDescriptors
СвойствоДескрипторы вида получателя.
Объявление
Swift
var sortDescriptors: [AnyObject]?
Objective C
@property(nonatomic, strong) NSArray *sortDescriptors
Обсуждение
Дескрипторы вида указывают, как объекты возвратились, когда запрос выборки выпущен, должен быть упорядочен — например, фамилией тогда именем. Дескрипторы вида применяются в порядке, в котором они появляются в
sortDescriptors
массив (последовательно в самом низком массиве индексируют первый порядок).Значение
nil
не обрабатывается как никакие дескрипторы вида.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.4 и позже.
-
Ключ отношения соединяет каналом для упреждающей выборки вместе с объектом для запроса.
Объявление
Swift
var relationshipKeyPathsForPrefetching: [AnyObject]?
Objective C
@property(nonatomic, copy) NSArray *relationshipKeyPathsForPrefetching
Обсуждение
Массив ключевого пути отношения представляет в виде строки в
NSKeyValueCoding
нотация (поскольку Вы обычно использовали бы сvalueForKeyPath:
). Значение по умолчанию является пустым массивом (никакая упреждающая выборка).Упреждающая выборка позволяет Базовым Данным получать связанные объекты в единственной выборке (на объект), вместо того, чтобы подвергаться последующему доступу к хранилищу для каждой отдельной записи, поскольку смещены их отказы. Например, учитывая объект Сотрудника с отношением к объекту Отдела, если Вы выбираете всех сотрудников тогда для каждого, распечатывают их имя и имя отдела, которому они принадлежат, может случиться так, что отказ должен быть уволен за каждый отдельный объект Отдела (для большего количества подробных данных, посмотрите Базовую Производительность Данных в Базовом Руководстве по программированию Данных). Это может представлять значительные издержки. Вы могли избежать этого путем упреждающей выборки отношения отдела в выборке Сотрудника, как проиллюстрировано в следующем примере:
NSManagedObjectContext *context = ...;
NSEntityDescription *employeeEntity = [NSEntityDescription
entityForName:@"Employee" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.tntity = employeeEntity;
request.relationshipKeyPathsForPrefetching =
[NSArray arrayWithObject:@"department"]];
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
resultType resultType
СвойствоТип результата получателя.
Объявление
Swift
var resultType: NSFetchRequestResultType
Objective C
@property(nonatomic) NSFetchRequestResultType resultType
Обсуждение
Значение по умолчанию
NSManagedObjectResultType
.Если Вы устанавливаете значение в
NSManagedObjectIDResultType
, если Вы не будете включать значения свойств в запрос, это понизит в должности любые упорядочивания вида к подсказкам «максимальных усилий».Специальные замечания
См. также
includesPendingChanges
для обсуждения взаимодействие результата вводит с тем, приняты ли незаконченные изменения во внимание.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Булево значение, указывающее, соответствует ли, когда выборка выполняется, оно против в настоящее время несохраняемых изменений в контексте управляемого объекта.
Объявление
Swift
var includesPendingChanges: Bool
Objective C
@property(nonatomic) BOOL includesPendingChanges
Возвращаемое значение
YES
true
если, когда выборка будет выполняться, она будет соответствовать против в настоящее время несохраняемых изменений в контексте управляемого объекта, иначеNO
false
.Обсуждение
YES
true
если, когда выборка будет выполняться, она будет соответствовать против в настоящее время несохраняемых изменений в контексте управляемого объекта, иначеNO
false
. Значение по умолчаниюYES
true
.Если значение
NO
false
, пропуски запроса выборки, проверяющие несохраненные изменения и только, возвращают объекты, соответствовавшие предикат в персистентном хранилище.Специальные замечания
Значение
YES
true
не поддерживается в сочетании с типом результатаNSDictionaryResultType
, включая вычисление итоговых результатов (такой какmax
иmin
). Для словарей массив возвратился из выборки, отражает текущее состояние в персистентном хранилище и не принимает во внимание незаконченных изменений, вставок или удалений в контексте.Если необходимо принять незаконченные изменения во внимание для некоторых простых агрегаций как
max
иmin
, можно вместо этого использовать нормальный запрос выборки, сортированный на атрибуте, который Вы хотите с пределом выборки 1.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.6 и позже.
-
propertiesToFetch propertiesToFetch
СвойствоМассив объектов описания свойства, указывающих, какие свойства должны быть возвращены выборкой.
Объявление
Swift
var propertiesToFetch: [AnyObject]?
Objective C
@property(nonatomic, copy) NSArray *propertiesToFetch
Обсуждение
Описания свойства являются экземплярами
NSPropertyDescription
. Описания свойства могут представлять атрибуты, к - отношения или выражения. Имя атрибута или описания отношения должно соответствовать имя описания на объекте запроса выборки.Специальные замечания
Необходимо установить объект для запроса выборки прежде, чем установить это значение, иначе
NSFetchRequest
броскиNSInvalidArgumentException
исключение.Это значение только используется если
resultType
установлен вNSDictionaryResultType
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
Булево значение, указывающее, возвращает ли запрос выборки только отличные значения для полей, указанных
propertiesToFetch
.Объявление
Swift
var returnsDistinctResults: Bool
Objective C
@property(nonatomic) BOOL returnsDistinctResults
Обсуждение
YES
true
если, когда выборка выполняется, она возвращает только отличные значения для полей, указанныхpropertiesToFetch
, иначеNO
false
. Значение по умолчаниюNO
false
.Специальные замечания
Если значение было установлено для, это значение только используется
propertiesToFetch
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
Булево значение, указывающее, получены ли, когда выборка выполняется, данные свойства из персистентного хранилища.
Объявление
Swift
var includesPropertyValues: Bool
Objective C
@property(nonatomic) BOOL includesPropertyValues
Возвращаемое значение
YES
true
если, данные свойства получены из персистентного хранилища, иначе, когда выполняется выборкаNO
false
.Обсуждение
YES
true
если, данные свойства получены из персистентного хранилища, иначе, когда выполняется выборкаNO
false
. Значение по умолчаниюYES
true
.Можно установить
includesPropertyValues
кNO
false
сокращать память наверху путем предотвращения создания объектов представлять значения свойств. Необходимо обычно только сделать так, однако, если Вы будете уверены, что или Вам не будут нужны фактические данные свойства, или у Вас уже есть информация в кэше строки, то иначе Вы подвергнетесь многократным прохождениям в базу данных.Во время нормальной выборки (
includesPropertyValues
YES
true
), Базовые Данные выбирают идентификатор объекта и данные свойства для соответствующих записей, заполняют кэш строки информацией и возвращают управляемый объект как отказы (см.returnsObjectsAsFaults
). Эти отказы являются управляемыми объектами, но все их данные свойства все еще находятся в кэше строки, пока не запущен отказ. Когда отказ запущен, Базовые Данные получают данные от кэша строки — нет никакой потребности вернуться к базе данных.Если
includesPropertyValues
NO
false
, тогда Базовые Данные выбирают только информацию идентификатора объекта для соответствующих записей — это не заполняет кэш строки. Базовые Данные все еще возвращают управляемые объекты, так как им только нужен управляемый объект IDs для создания отказов. Однако, если Вы впоследствии запускаете отказ, Базовые взгляды Данных в (пустом) кэше строки, не находит данных, и затем возвращается к хранилищу во второй раз для данных.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Булево значение, указывающее, будут ли значения свойств выбранных объектов обновлены с текущей стоимостью в персистентном хранилище.
Объявление
Swift
var shouldRefreshRefetchedObjects: Bool
Objective C
@property(nonatomic) BOOL shouldRefreshRefetchedObjects
Обсуждение
YES
true
если значения свойств выбранных объектов будут обновлены с текущей стоимостью в персистентном хранилище, иначеNO
false
.По умолчанию, когда Вы выбираете объекты, они поддерживают свои текущие значения свойств, даже если изменились значения в персистентном хранилище. Путем вызова этого метода с параметром
YES
true
, когда выборка выполняется значения свойств выбранных объектов, которые будут обновлены с текущей стоимостью в персистентном хранилище. Это обеспечивает более удобный способ гарантировать, что значения свойств управляемого объекта являются соответствующими хранилищу, чем при помощиrefreshObject:mergeChanges:
(NSManagedObjetContext
) для многократных объектов поочередно.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Булево значение, указывающее, являются ли объекты, следующие из выборки с помощью получателя, отказами.
Объявление
Swift
var returnsObjectsAsFaults: Bool
Objective C
@property(nonatomic) BOOL returnsObjectsAsFaults
Обсуждение
YES
true
если объекты, следующие из выборки с помощью получателя, являются отказами, иначеNO
false
. Значение по умолчаниюYES
true
. Эта установка не используется, если тип результата (см.resultType
)NSManagedObjectIDResultType
, поскольку идентификаторы объектов не имеют значений свойств. Можно установитьreturnsObjectsAsFaults
кNO
false
для получения выигрыша в производительности, если Вы знаете, необходимо будет получить доступ к значениям свойств от возвращенных объектов.По умолчанию, когда Вы выполняете выборку
returnsObjectsAsFaults
YES
true
; Базовые Данные выбирают данные объектов для соответствующих записей, заполняют кэш строки информацией и возвращают управляемый объект как отказы. Эти отказы являются управляемыми объектами, но все их данные свойства находятся в кэше строки, пока не запущен отказ. Когда отказ запущен, Базовые Данные получают данные от кэша строки. Несмотря на то, что издержки для этой работы являются маленькими, для больших наборов данных это может стать нетривиальным. Если необходимо получить доступ к значениям свойств от возвращенных объектов (например, если Вы выполняете итерации по всем объектам вычислить среднее значение определенного атрибута), то более эффективно установитьreturnsObjectsAsFaults
кNO
false
избегать дополнительных издержек.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
propertiesToGroupBy propertiesToGroupBy
СвойствоМассив объектов, указывающих, как данные должны быть сгруппированы перед избранным оператором, выполняется в базе данных SQL.
Объявление
Swift
var propertiesToGroupBy: [AnyObject]?
Objective C
@property(nonatomic, copy) NSArray *propertiesToGroupBy
Возвращаемое значение
Массив
NSPropertyDescription
илиNSExpressionDescription
объекты или строки ключевого пути, указывающие, как данные должны быть сгруппированы перед избранным оператором, выполняются в базе данных SQL.Обсуждение
Массив
NSPropertyDescription
илиNSExpressionDescription
объекты или строки ключевого пути, указывающие, как данные должны быть сгруппированы перед избранным оператором, выполняются в базе данных SQL.Если Вы используете эту установку, то необходимо установить
resultType
кNSDictionaryResultType
, и значения SELECT должны быть литералами, агрегируется, или столбцы, указанные в GROUP BY. Агрегаты будут воздействовать на группы, указанные в GROUP BY, а не целой таблице. При установке свойств для группировки, можно также установить предикат наличия — посмотритеhavingPredicate
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
havingPredicate havingPredicate
СвойствоПредикат раньше фильтровал строки, возвращаемые запросом, содержащим GROUP BY.
Объявление
Swift
var havingPredicate: NSPredicate?
Objective C
@property(nonatomic, strong) NSPredicate *havingPredicate
Обсуждение
Если предикат наличия будет предоставлен, то он будет выполнен после GROUP BY. Указание предиката HAVING требует, чтобы также был указан GROUP BY. Для обсуждения GROUP BY посмотрите
setPropertiesToGroupBy:
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Эти константы указывают возможные типы результата, которые может возвратить запрос выборки.
Объявление
Swift
struct NSFetchRequestResultType : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var ManagedObjectResultType: NSFetchRequestResultType { get } static var ManagedObjectIDResultType: NSFetchRequestResultType { get } static var DictionaryResultType: NSFetchRequestResultType { get } static var CountResultType: NSFetchRequestResultType { get } }Objective C
enum { NSManagedObjectResultType = 0x00, NSManagedObjectIDResultType = 0x01, NSDictionaryResultType = 0x02 NSCountResultType = 0x04 }; typedef NSUInteger NSFetchRequestResultType;
Константы
-
ManagedObjectResultType
NSManagedObjectResultType
Указывает, что запрос возвращает управляемые объекты.
Доступный в OS X v10.5 и позже.
-
ManagedObjectIDResultType
NSManagedObjectIDResultType
Указывает, что запрос возвращает управляемый объект IDs.
Доступный в OS X v10.5 и позже.
-
DictionaryResultType
NSDictionaryResultType
Указывает, что запрос возвращает словари.
См. также
includesPendingChanges
иpropertiesToFetch
.Доступный в OS X v10.6 и позже.
-
CountResultType
NSCountResultType
Указывает, что запрос возвращает количество объектов, соответствующих запрос.
Доступный в OS X v10.6 и позже.
Обсуждение
Эти константы используются
resultType
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-