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!(recordZoneIDrecordZoneID: CKRecordZoneID!, previousServerChangeTokenpreviousServerChangeToken: CKServerChangeToken!)Objective C
- (instancetype)initWithRecordZoneID:(CKRecordZoneID *)recordZoneIDpreviousServerChangeToken:(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: IntObjective C
@property(nonatomic, assign) NSUInteger resultsLimitОбсуждение
Используйте это свойство для ограничения числа результатов в ситуациях, где Вы ожидаете, что число измененных записей могло бы быть большим. Значение по умолчанию 0, который заставляет сервер выбирать надлежащее число результатов возвратиться на основе динамических условий.
Когда число возвращенных результатов превышает предел результатов, объект операции устанавливает
moreComingсвойство кYEStrueпрежде, чем выполнить блок вfetchRecordChangesCompletionBlockсвойство. В Вашем блоке проверьте значение того свойства, и если этоYEStrue, создайте новое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)Обсуждение
Блок не возвращает значения и берет следующие параметры:
recordIDID удаленной записи.
Объект операции выполняет этот блок один раз для каждой записи в зоне, удаленной начиная с предыдущего запроса выборки. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы. Если никакие записи не были удалены, этот блок не выполняется.
Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить его очереди.
Оператор импорта
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свойство объекта операции, чтобы гарантировать, что сервер смог поставить все результаты. Если то свойство установлено вYEStrue, необходимо создать другой объект операции (использующий значение в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Обсуждение
Если сервер неспособен поставить все измененные результаты с этим объектом операции, он устанавливает это свойство в
YEStrueпрежде, чем выполнить блок вfetchRecordChangesCompletionBlockсвойство. Для выборки остающихся изменений создайте новоеCKFetchRecordChangesOperationобъект с помощью маркера изменения, возвращенного сервером.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
