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!(query
query
: 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!(cursor
cursor
: 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: Int
Objective 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)
Обсуждение
Блок не возвращает значения и берет следующий параметр:
record
A
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)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
cursor
A
CKQueryCursor
указывающий объект существует больше результатов выбрать илиnil
если параметр результатов содержит все остающиеся результаты поиска. Используйте предоставленный объект инициализировать новый объект операции запроса, когда Вы будете готовы получить следующий пакет результатов.operationError
Ошибочный объект, содержащий информацию о проблеме, или
nil
если результаты получены успешно.Этот блок выполняется только один раз и представляет Ваш последний шанс обработать результаты работы. Это выполняется после всех отдельных блоков прогресса, но перед блоком завершения работы. Блок выполняется последовательно относительно других блоков прогресса работы. Если Вы намереваетесь использовать этот блок для обработки результатов, обновите значение этого свойства прежде, чем выполнить работу или представить объект операции очереди.
Когда результаты работы запроса известны, объект операции использует этот блок для поставки доступного набора записей на приложение. Если число записей превышает значение в
resultsLimit
, объект операции обеспечивает непрозрачный объект данных вcursor
параметр Вашего блока, который можно использовать для получения следующего пакета результатов. Необходимо создать отдельный объект операции с помощью того курсора для получения следующего пакета результатов.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Постоянное указание числа результатов возвратиться для запроса.
Объявление
Swift
let CKQueryOperationMaximumResults: Int
Objective C
const NSUInteger CKQueryOperationMaximumResults;
Константы
-
CKQueryOperationMaximumResults
CKQueryOperationMaximumResults
Значение заполнителя, представляющее максимальное количество результатов получить. Значение этой константы не соответствует фактическому числу записей. Фактическое максимальное значение определяется динамично сервером на основе различных условий.
Эта константа является значением по умолчанию, присвоенным
resultsLimit
свойство.Доступный в OS X v10.10 и позже.
-