CKFetchRecordsOperation
A CKFetchRecordsOperation
объект получает CKRecord
объекты (чей IDs Вы уже знаете) от iCloud. Используйте эту работу для получения всего содержания каждой записи или только подмножества ее содержавших значений. Поскольку записи становятся доступными, прогресс отчетов объекта операции о состоянии работы к нескольким различным блокам, которые можно использовать для обработки результатов.
Даже если Ваше приложение не кэширует рекордный IDs локально, выборка записей является общим использованием CloudKit. Например, когда Вы выбираете запись, связанную с текущей записью через a CKReference
объект, Вы используете ID в ссылке для выполнения выборки.
Блоки, которые Вы присваиваете для обработки выбранных записей, выполняются последовательно на внутренней очереди, которой управляет работа записей выборки. Ваши блоки должны быть способны к выполнению на фоновом потоке, таким образом, любые задачи, требующие доступа к основному потоку, должны быть перенаправлены соответственно.
В дополнение к записям данных работа записей выборки может выбрать текущую пользовательскую запись. fetchCurrentUserRecordOperation
метод возвращает специально сконфигурированный объект операции, получающий текущую пользовательскую запись. Та запись является стандартом CKRecord
возразите, чье содержание пусто первоначально. Можно добавить, что данные пользователю записывают и сохраняют его по мере необходимости. Поскольку к поддающейся обнаружению пользовательской записи могут получить доступ другие пользователи приложения, никогда не храните чувствительную персональную информацию, такую как пароли в пользовательской записи. Если необходимо хранить уязвимую информацию о пользователе, сделайте так в отдельной записи, которая доступна только для того пользователя.
Если Вы присваиваете блок завершения completionBlock
свойство объекта операции, блок завершения вызывают после того, как работа выполняет и возвращает свои результаты Вам. Вы можете использовать блок завершения для выполнения работы по дому обслуживания, связанной с работой, но не используете ее для обработки результатов самой работы. Любой блок завершения, который Вы указываете, должен быть подготовлен обработать отказ работы выполнить ее задачу, ли вследствие ошибки или явной отмены.
Наследование
-
NSObject
-
NSOperation
-
CKOperation
-
CKDatabaseOperation
-
CKFetchRecordsOperation
-
NSObject
-
NSOperation
-
CKOperation
-
CKDatabaseOperation
-
CKFetchRecordsOperation
Оператор импорта
Swift
import CloudKit
Objective C
@import CloudKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Инициализирует и возвращает объект операции, сконфигурированный для выборки записей с указанным IDs.
Объявление
Swift
convenience init!(recordIDs
recordIDs
: [AnyObject]!)Objective C
- (instancetype)initWithRecordIDs:(NSArray *)
recordIDs
Параметры
recordIDs
Массив
CKRecordID
объекты, представляющие записи, Вы хотите получить. Этот параметр используется для инициализации значения вrecordIDs
свойство. Если указываютnil
, необходимо присвоить надлежащее значениеrecordIDs
свойство прежде, чем выполнить работу.Если какой-либо из объектов в массиве не
CKRecordID
объекты, этот метод повышает исключение.Возвращаемое значение
Инициализированный объект операции.
Обсуждение
Возвращенный объект операции сконфигурирован для получения всех полей записи, включая любые активы, сохраненные в тех полях. Если Вы хотите минимизировать объем данных, возвращенный первоначально, сконфигурируйте
desiredKeys
свойство с подмножеством ключей, значения которых Вы хотите получить.После инициализации работы необходимо связать по крайней мере один блок прогресса с объектом операции (исключая блок завершения) для обработки результатов.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Возвращает объект операции, который может использоваться для выборки текущей пользовательской записи.
Объявление
Swift
class func fetchCurrentUserRecordOperation() -> Self!
Objective C
+ (instancetype)fetchCurrentUserRecordOperation
Обсуждение
Возвращенный объект операции ищет единственную запись, соответствующую текущей пользовательской записи. Необходимо связать по крайней мере один блок прогресса с объектом операции (исключая блок завершения) для обработки результатов.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Массив IDs, соответствующего записям на выборку.
Объявление
Swift
var recordIDs: [AnyObject]!
Objective C
@property(nonatomic, copy) NSArray *recordIDs
Обсуждение
Используйте это свойство, чтобы просмотреть или изменить IDs записей, которые Вы хотите получить. Каждый элемент в массиве должен быть a
CKRecordID
объект. Если Вы использовалиfetchCurrentUserRecordOperation
метод для создания объекта операции содержание этого свойства проигнорировано, и значение установлено вnil
.Если Вы намереваетесь указать значение кроме
nil
, сделайте так прежде, чем выполнить работу или представить объект операции очереди. Записи, которые Вы выбираете, не должны быть в той же рекордной зоне. Рекордный ID для каждой записи предоставляет зональную информацию, необходимую серверу для выборки соответствующей записи.Оператор импорта
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 и позже.
-
Блок для выполнения с информацией о прогрессе для отдельных записей.
Объявление
Swift
var perRecordProgressBlock: ((CKRecordID!, Double) -> Void)!
Objective C
@property(nonatomic, copy) void (^perRecordProgressBlock)( CKRecordID *recordID, double progress)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
recordID
ID получающейся записи.
progress
Сумма записи, загруженной, представляла как процент общего количества. Диапазон этого значения
0.0
к1.0
, где0.0
средние значения ничто не было загружено, и1.0
означает, что загрузка завершена.Объект операции выполняет этот блочный нуль или больше раз для каждого рекордного ID в
recordIDs
свойство. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы. Можно использовать этот блок, чтобы отследить продолжающийся прогресс работы загрузки и возможно предоставить обратную связь пользователю.Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Блок для выполнения, когда результаты единственной записи доступны.
Объявление
Swift
var perRecordCompletionBlock: ((CKRecord!, CKRecordID!, NSError!) -> Void)!
Objective C
@property(nonatomic, copy) void (^perRecordCompletionBlock)( CKRecord *record, CKRecordID *recordID, NSError *error)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
record
Полученная запись, или
nil
если не может быть получена указанная запись.recordID
ID записи. Это значение соответствует одному из IDs, который Вы указали в
recordIDs
свойство.error
Ошибочный объект, содержащий информацию о проблеме, или
nil
если результаты получены успешно.Объект операции выполняет этот блок один раз для каждого рекордного ID в
recordIDs
свойство. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы.Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Блок для выполнения после всех записей выбирается или получил надлежащие ошибки.
Объявление
Objective C
@property(nonatomic, copy) void (^fetchRecordsCompletionBlock)( NSDictionary *recordsByRecordID, NSError *operationError)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
recordsByRecordID
Словарь, содержащий записи, полученные успешно. Каждый ключ в словаре является a
CKRecordID
объект, соответствующий записи, Вы запросили. Значение каждого ключа является соответствиемCKRecord
объект, полученный от базы данных.operationError
Ошибочный объект, содержащий информацию о проблеме, или
nil
если результаты получены успешно.Объект операции выполняет этот блок только один раз и является Вашим последним шансом обработать результаты работы. Блок выполняется после всех отдельных блоков прогресса, но перед блоком завершения работы. Блок выполняется последовательно относительно других блоков прогресса работы.
Этот блок сообщает об ошибке типа
CKErrorPartialFailure
когда это получает только некоторые записи успешно.userInfo
словарь ошибки содержит aCKPartialErrorsByItemIDKey
ключ, значение которогоNSDictionary
объект. Ключами того словаря является IDs записей, не полученных, и соответствующие значения являются ошибочными объектами, содержащими информацию о том, что произошло.Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.