CKQueryOperation
A CKQueryOperation объект является конкретной работой, которую можно использовать для выполнения запросов против базы данных. Работа запроса берет параметры запроса, которые Вы обеспечиваете, и применяет те параметры к указанной базе данных и зоне, поставляя любые записи соответствия асинхронно на блоки, которые Вы обеспечиваете.
Выполнять новый поиск:
Инициализируйте a
CKQueryOperationобъект с aCKQueryобъект, содержащий критерии поиска и сортирующий информацию для записей, Вы хотите.Присвойте блок
queryCompletionBlockсвойство так, чтобы можно было обработать результаты и выполнить работу.Если поиск приводит ко многим записям, объект операции может поставить часть общих результатов к Вашим блокам сразу, вместе с курсором для получения остающихся записей. Если курсор предоставлен, используйте его, чтобы инициализировать и выполнить отдельное
CKQueryOperationвозразите, когда Вы будете готовы обработать следующий пакет результатов.Дополнительно сконфигурируйте результаты возврата путем указания значений для
resultsLimitиdesiredKeysсвойства.Передайте объект операции запроса
addOperation:метод целевой базы данных для выполнения работы против той базы данных.
Запросы ограничиваются записями в единственной зоне. Для новых запросов Вы указываете зону при инициализации объекта операции запроса. Для основанных на курсоре запросов курсор содержит зональную информацию. Для поиска записей в многократных зонах необходимо создать отдельное CKQueryOperation объект для каждой зоны, которую Вы хотите искать, несмотря на то, что можно инициализировать каждого из них с тем же CKQuery объект.
Если Вы присваиваете блок завершения completionBlock свойство объекта операции, блок завершения вызывают после того, как работа выполняет и возвращает свои результаты Вам. Вы можете использовать блок завершения для выполнения работы по дому обслуживания, связанной с работой, но не используете ее для обработки результатов самой работы. Любой блок завершения, который Вы указываете, должен быть подготовлен обработать отказ работы выполнить ее задачу, ли вследствие ошибки или явной отмены.
Наследование
-
NSObject -
NSOperation -
CKOperation -
CKDatabaseOperation -
CKQueryOperation
-
NSObject -
NSOperation -
CKOperation -
CKDatabaseOperation -
CKQueryOperation
Оператор импорта
Swift
import CloudKit
Objective C
@import CloudKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Инициализирует и возвращает объект операции, сконфигурированный для поиска записей в указанной зоне.
Объявление
Swift
convenience init!(queryquery: CKQuery!)Objective C
- (instancetype)initWithQuery:(CKQuery *)queryПараметры
queryЗапрос для использования во время поиска. Этот параметр не должен быть
nil.Возвращаемое значение
Инициализированный объект операции.
Обсуждение
Можно использовать возвращенный
CKQueryOperationвозразите только один раз для выполнения поиска, но объект Вы указываете вqueryпараметр может быть снова использован по мере необходимости. Когда выполняется, этот объект запроса выполняет новый поиск и возвращает первый пакет результатов. Если существует больше доступных результатов, необходимо создать отдельный объект запроса использование предоставленного объекта курсора.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Инициализирует и возвращает объект операции, возвращающий больше результатов предыдущего поиска.
Объявление
Swift
convenience init!(cursorcursor: CKQueryCursor!)Objective C
- (instancetype)initWithCursor:(CKQueryCursor *)cursorПараметры
cursorОбъект курсора идентификация предыдущего поиска. Это значение передается блоку завершения предыдущего поиска. Для получения дополнительной информации посмотрите
queryCompletionBlockсвойство.Возвращаемое значение
Инициализированный объект операции, готовый продолжать поиск.
Обсуждение
Используйте этот метод для инициализации работы запроса, получающей следующий пакет результатов предыдущего поиска. При выполнении поисков на основе курсора не кэшируйте объекты курсора в течение длительного времени перед использованием их. Курсор не является снимком предыдущих результатов поиска; это хранит относительное смещение в список результатов. Объект операции создал использование курсора, выполняет новый поиск, сортирует новый набор результатов и использует предыдущее значение смещения для определения, где запускается следующий пакет результатов.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Запрос для использования для поиска.
Объявление
Swift
@NSCopying var query: CKQuery!Objective C
@property(nonatomic, copy) CKQuery *queryОбсуждение
Вы устанавливаете начальное значение этого свойства с
initWithQuery:метод. Когда значение вcursorсвойствоnil, работа запроса используетCKQueryобъект в этом свойстве, чтобы выполнить новый поиск и возвратить результаты Вашему обработчику завершения. Если значение курсора неnil, курсор используется вместо этого.Если Вы намереваетесь указать или изменить значение этого свойства, сделайте так прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Курсор данных для использования для продолжения поиска.
Объявление
Swift
@NSCopying var cursor: CKQueryCursor!Objective C
@property(nonatomic, copy) CKQueryCursor *cursorОбсуждение
Вы устанавливаете начальное значение этого свойства с
initWithCursor:метод. Когда Вы используете курсор, содержаниеqueryсвойство проигнорировано. Курсор данных, сохраненный в этом свойстве, является непрозрачным объектом, который предоставлен для Вас сервером. Для получения дополнительной информации о получении этого курсора, посмотритеqueryCompletionBlockсвойство.Если Вы намереваетесь указать или изменить значение в этом свойстве, сделайте так прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
ID зоны, содержащей записи на поиск.
Объявление
Swift
@NSCopying var zoneID: CKRecordZoneID!Objective C
@property(nonatomic, copy) CKRecordZoneID *zoneIDОбсуждение
Когда установлено, значение этого свойства ограничивает объем поиска к записям в указанной зоне. Если никакая зона не указана, поиск имеет место в зоне по умолчанию контейнера.
Когда Вы инициализируете объект операции с помощью
initWithCursor:метод, значение этого свойства установлено вnilи проигнорированы любые изменения, которые Вы вносите в свойство. Когда объект операции выполняется, объект курсора предоставляет зональную информацию от начального поиска, генерировавшего курсор.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
resultsLimit resultsLimitСвойствоМаксимальное количество записей для возврата когда-то.
Объявление
Swift
var resultsLimit: IntObjective C
@property(nonatomic, assign) NSUInteger resultsLimitОбсуждение
Для большинства запросов оставьте значение этого набора свойств к значению по умолчанию, представленному
CKQueryOperationMaximumResultsпостоянный. При использовании того значения сервер выбирает предел, стремящийся обеспечивать оптимальное число результатов, возвращающее как можно больше записей при минимизации задержек получения тех записей. Однако, если Вы знаете, что хотите обработать постоянное число результатов, изменить значение этого свойства соответственно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
desiredKeys desiredKeysСвойствоПоля для получения для требуемых записей.
Объявление
Swift
var desiredKeys: [AnyObject]!Objective C
@property(nonatomic, copy) NSArray *desiredKeysОбсуждение
Используйте это свойство для ограничения объема данных, полученного для каждой записи во время поисковой работы. Значение является массивом
NSStringобъекты, каждый из которых содержит имя поля от целевых записей. При получении данного рекордного, только полей, имена которых соответствуют, один из указанных ключей включены в возвращенную запись. Если Вы указываетеnil, работа получает все ключи для записи. Значение по умолчанию этого свойстваnil.Если Вы намереваетесь указать значение, необходимо сделать так прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
recordFetchedBlock recordFetchedBlockСвойствоБлок для выполнения для каждой записи, возвращенной запросом.
Объявление
Swift
var recordFetchedBlock: ((CKRecord!) -> Void)!Objective C
@property(nonatomic, copy) void (^recordFetchedBlock)( CKRecord *record)Обсуждение
Блок не возвращает значения и берет следующий параметр:
recordA
CKRecordобъект, соответствующий критерии поиска.После идентификации и сортировки записей, объект операции выполняет этот блок один раз для каждой записи в сортированных результатах. Блок выполняется последовательно относительно всех блоков прогресса объекта операции, таким образом, можно ожидать, что только один блок за один раз выполнится для этого объекта операции.
Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
queryCompletionBlock queryCompletionBlockСвойствоБлок для выполнения с результатами поиска.
Объявление
Swift
var queryCompletionBlock: ((CKQueryCursor!, NSError!) -> Void)!Objective C
@property(nonatomic, copy) void (^queryCompletionBlock)( CKQueryCursor *cursor, NSError *operationError)Обсуждение
Блок не возвращает значения и берет следующие параметры:
cursorA
CKQueryCursorуказывающий объект существует больше результатов выбрать илиnilесли параметр результатов содержит все остающиеся результаты поиска. Используйте предоставленный объект инициализировать новый объект операции запроса, когда Вы будете готовы получить следующий пакет результатов.operationErrorОшибочный объект, содержащий информацию о проблеме, или
nilесли результаты получены успешно.Этот блок выполняется только один раз и представляет Ваш последний шанс обработать результаты работы. Это выполняется после всех отдельных блоков прогресса, но перед блоком завершения работы. Блок выполняется последовательно относительно других блоков прогресса работы. Если Вы намереваетесь использовать этот блок для обработки результатов, обновите значение этого свойства прежде, чем выполнить работу или представить объект операции очереди.
Когда результаты работы запроса известны, объект операции использует этот блок для поставки доступного набора записей на приложение. Если число записей превышает значение в
resultsLimit, объект операции обеспечивает непрозрачный объект данных вcursorпараметр Вашего блока, который можно использовать для получения следующего пакета результатов. Необходимо создать отдельный объект операции с помощью того курсора для получения следующего пакета результатов.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Постоянное указание числа результатов возвратиться для запроса.
Объявление
Swift
let CKQueryOperationMaximumResults: IntObjective C
const NSUInteger CKQueryOperationMaximumResults;Константы
-
CKQueryOperationMaximumResultsCKQueryOperationMaximumResultsЗначение заполнителя, представляющее максимальное количество результатов получить. Значение этой константы не соответствует фактическому числу записей. Фактическое максимальное значение определяется динамично сервером на основе различных условий.
Эта константа является значением по умолчанию, присвоенным
resultsLimitсвойство.Доступный в OS X v10.10 и позже.
-
