CKFetchRecordChangesOperation
A CKFetchRecordChangesOperation
возразите отчетам относительно измененных и удаленных записей в указанной рекордной зоне. Используйте этот тип объекта операции для оптимизации операций выборки для локально управляемых наборов записей. В частности используйте его, когда Вы поддержите локальный кэш своих рекордных данных и должны будете периодически синхронизировать тот кэш с сервером.
Извлечь максимальную пользу из a CKFetchRecordChangesOperation
объект, необходимо поддержать локальный кэш записей от указанной зоны. Каждый раз, когда Вы выбираете изменения от той зоны, сервер обеспечивает маркер, идентифицирующий Ваш запрос. С каждым последующим запросом выборки Вы инициализируете объект операции с маркером от предыдущего запроса, и сервер возвращает только записи, изменившиеся начиная с того запроса.
Блоки, которые Вы присваиваете для обработки выбранных записей, выполняются последовательно на внутренней очереди, которой управляет работа. Ваши блоки должны быть способны к выполнению на фоновом потоке, таким образом, любые задачи, требующие доступа к основному потоку, должны быть перенаправлены соответственно.
Если Вы присваиваете блок завершения completionBlock
свойство объекта операции, блок завершения вызывают после того, как работа выполняет и возвращает свои результаты Вам. Вы можете использовать блок завершения для выполнения работы по дому обслуживания, связанной с работой, но не используете ее для обработки результатов самой работы. Любой блок завершения, который Вы указываете, должен быть подготовлен обработать отказ работы выполнить ее задачу, ли вследствие ошибки или явной отмены.
Наследование
-
NSObject
-
NSOperation
-
CKOperation
-
CKDatabaseOperation
-
CKFetchRecordChangesOperation
-
NSObject
-
NSOperation
-
CKOperation
-
CKDatabaseOperation
-
CKFetchRecordChangesOperation
Оператор импорта
Swift
import CloudKit
Objective C
@import CloudKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Инициализирует и возвращает объект операции, сконфигурированный для выборки изменений в указанной рекордной зоне.
Объявление
Swift
init!(recordZoneID
recordZoneID
: CKRecordZoneID!, previousServerChangeTokenpreviousServerChangeToken
: CKServerChangeToken!)Objective C
- (instancetype)initWithRecordZoneID:(CKRecordZoneID *)
recordZoneID
previousServerChangeToken:(CKServerChangeToken *)previousServerChangeToken
Параметры
recordZoneID
Зона, содержащая записи, Вы хотите выбрать. Зона может быть пользовательской зоной или зоной по умолчанию.
previousServerChangeToken
Маркер изменения от предыдущей работы выборки. Это - маркер, переданный Вашему
fetchRecordChangesCompletionBlock
обработчик во время предыдущей работы выборки. Используйте этот маркер для ограничения возвращенных данных только теми изменениями, произошедшими, так как Вы в последний раз выполнили тот же запрос выборки. Если Вы указываетеnil
для этого параметра объект операции выбирает все записи и их содержание.Возвращаемое значение
Инициализированный объект операции.
Обсуждение
При инициализации объекта операции используйте маркер от предыдущего запроса выборки, если у Вас есть тот. Можно заархивировать маркеры и записать им в диск для более позднего использования в случае необходимости.
Возвращенный объект операции сконфигурирован для получения всех измененных полей записи, включая любые активы, сохраненные в тех полях. Если Вы хотите минимизировать объем данных, возвращенный еще больше, сконфигурируйте
desiredKeys
свойство с подмножеством ключей, значения которых Вы хотите выбрать.После инициализации работы свяжите по крайней мере один блок прогресса с объектом операции (исключая блок завершения) для обработки результатов.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
recordZoneID recordZoneID
СвойствоID рекордной зоны, записи которой Вы хотите выбрать.
Объявление
Swift
@NSCopying var recordZoneID: CKRecordZoneID!
Objective C
@property(nonatomic, copy) CKRecordZoneID *recordZoneID
Обсуждение
Как правило, Вы устанавливаете значение этого свойства при инициализации объекта операции. Если Вы намереваетесь изменить рекордную зону, обновите значение прежде, чем выполнить работу или представить его очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Маркер, идентифицирующий начальную точку для получения изменений.
Объявление
Swift
@NSCopying var previousServerChangeToken: CKServerChangeToken!
Objective C
@property(nonatomic, copy) CKServerChangeToken *previousServerChangeToken
Обсуждение
Каждый запрос выборки возвращает уникальный маркер в дополнение к любым изменениям. Маркер передается в качестве параметра Вашему
fetchRecordChangesCompletionBlock
обработчик. Во время последующего запроса выборки, обеспечивая предыдущий маркер заставляет сервер возвращать только изменения, произошедшие начиная с последнего запроса выборки. Маркеры являются непрозрачными объектами данных, которые можно записать в диск безопасно и повторное использование позже.Как правило, Вы устанавливаете значение этого свойства при инициализации объекта операции. Если Вы намереваетесь изменить рекордную зону, обновите значение свойства прежде, чем выполнить работу или представить его очереди.
Оператор импорта
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
, который заставляет все ключи записи быть выбранными.Поскольку записи, которые Вы выбираете, могут иметь различные типы, массив должен содержать объединенный набор всех имен полей для требуемых записей и включать по крайней мере одно имя поля от каждого типа записи.
Если Вы намереваетесь указать желаемый набор ключей, установите значение этого свойства прежде, чем выполнить работу или представить его очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
resultsLimit resultsLimit
СвойствоМаксимальное количество измененных записей для создания отчетов с этим объектом операции.
Объявление
Swift
var resultsLimit: Int
Objective C
@property(nonatomic, assign) NSUInteger resultsLimit
Обсуждение
Используйте это свойство для ограничения числа результатов в ситуациях, где Вы ожидаете, что число измененных записей могло бы быть большим. Значение по умолчанию 0, который заставляет сервер выбирать надлежащее число результатов возвратиться на основе динамических условий.
Когда число возвращенных результатов превышает предел результатов, объект операции устанавливает
moreComing
свойство кYES
true
прежде, чем выполнить блок вfetchRecordChangesCompletionBlock
свойство. В Вашем блоке проверьте значение того свойства, и если этоYES
true
, создайте новоеCKFetchRecordChangesOperation
возразите для выборки большего количества результатов.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
recordChangedBlock recordChangedBlock
СвойствоБлок для выполнения с содержанием измененной записи.
Объявление
Swift
var recordChangedBlock: ((CKRecord!) -> Void)!
Objective C
@property(nonatomic, copy) void (^recordChangedBlock)( CKRecord *record)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
record
Изменившаяся запись. Поля в этом рекордном объекте могут не отразить все поля, доступные для той записи. В частности запись содержит значения только для тех изменившихся полей. Если Вы указали значение для
desiredKeys
свойство, измененные поля включены, только если их имя поля было указано в том массиве.Объект операции выполняет этот блок один раз для каждой записи в зоне, изменившейся начиная с предыдущего запроса выборки. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы. Если никакие записи не изменились, блок не выполняется.
Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить его очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Блок для выполнения с ID удаленной записи.
Объявление
Swift
var recordWithIDWasDeletedBlock: ((CKRecordID!) -> Void)!
Objective C
@property(nonatomic, copy) void (^recordWithIDWasDeletedBlock)( CKRecordID *recordID)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
recordID
ID удаленной записи.
Объект операции выполняет этот блок один раз для каждой записи в зоне, удаленной начиная с предыдущего запроса выборки. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы. Если никакие записи не были удалены, этот блок не выполняется.
Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить его очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
Блок для выполнения, когда сообщили обо всех изменениях.
Объявление
Swift
var fetchRecordChangesCompletionBlock: ((CKServerChangeToken!, NSData!, NSError!) -> Void)!
Objective C
@property(nonatomic, copy) void (^fetchRecordChangesCompletionBlock)( CKServerChangeToken *serverChangeToken, NSData *clientChangeTokenData, NSError *operationError)
Обсуждение
Блок не возвращает значения и берет следующие параметры:
serverChangeToken
Новый маркер изменения от сервера. Можно сохранить этот маркер локально и использовать его во время последующих операций выборки для ограничения результатов записями, изменившимися, так как эта работа выполнилась.
clientChangeToken
Маркер изменения, который Вы указали при инициализации объекта операции.
operationError
Ошибочный объект, содержащий информацию о проблеме, или
nil
если изменения получены успешно.Ваша реализация этого блока должна проверить
moreComing
свойство объекта операции, чтобы гарантировать, что сервер смог поставить все результаты. Если то свойство установлено вYES
true
, необходимо создать другой объект операции (использующий значение вserverChangeToken
параметр) для выборки любых остающихся изменений.Объект операции выполняет этот блок только один раз, в конце работы. Это выполняется после всех отдельных блоков изменения, но перед блоком завершения работы. Блок выполняется последовательно относительно других блоков прогресса работы.
Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди.
Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.
-
moreComing moreComing
СвойствоБулево значение, указывающее, что больше результатов доступно. (только для чтения)
Объявление
Swift
var moreComing: Bool { get }
Objective C
@property(nonatomic, readonly) BOOL moreComing
Обсуждение
Если сервер неспособен поставить все измененные результаты с этим объектом операции, он устанавливает это свойство в
YES
true
прежде, чем выполнить блок вfetchRecordChangesCompletionBlock
свойство. Для выборки остающихся изменений создайте новоеCKFetchRecordChangesOperation
объект с помощью маркера изменения, возвращенного сервером.Оператор импорта
Objective C
@import CloudKit;
Swift
import CloudKit
Доступность
Доступный в OS X v10.10 и позже.