Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы CloudKit ссылка класса CKModifyRecordsOperation

Опции
Развертывание Target:

На этой странице
Язык:

CKModifyRecordsOperation

A CKModifyRecordsOperation объект сохраняет изменения в один или больше CKRecord объекты. После изменения полей записи используйте этот тип объекта операции для сохранения тех изменений в базе данных. Вы также используете экземпляры этого класса для удаления записей постоянно из базы данных.

При сохранении записи, содержащей ссылки на другие записи, CloudKit должен быть в состоянии найти цель тех ссылок. Во время работы сохранения CloudKit проверяет, что любые целевые записи фактически существуют в базе данных. Если это не может проверить существование целевой записи, CloudKit сообщает об ошибке и не сохраняет запись, содержащую ссылку на ту цель. При создании двух новых записей, имеющих ссылку между ними, используйте тот же объект операции для сохранения обеих записей одновременно.

Когда Вы сохраняете записи, значение в savePolicy свойство определяет, как продолжить, когда конфликты обнаруживаются на сервере. Поскольку записи могут быть изменены между временем, Вы выбираете их и время, Вы сохраняете их, политика сохранения определяет, перезаписывают ли новые изменения существующие изменения. По умолчанию, если более новая версия записи найдена на сервере, объект операции сообщает об ошибке. Можно изменить настройки по умолчанию, чтобы разрешить изменениям перезаписывать значения сервера полно или частичный.

Блоки, которые Вы присваиваете для контроля динамики работы, выполняются последовательно на внутренней очереди, которой управляет объект операции. Ваши блоки должны быть способны к выполнению на фоновом потоке, таким образом, любые задачи, требующие доступа к основному потоку, должны быть перенаправлены соответственно.

Если Вы присваиваете блок завершения completionBlock свойство объекта операции, блок завершения вызывают после того, как работа выполняет и возвращает свои результаты Вам. Вы можете использовать блок завершения для выполнения работы по дому обслуживания, связанной с работой, но не используете ее для обработки результатов самой работы. Любой блок завершения, который Вы указываете, должен быть подготовлен обработать отказ работы выполнить ее задачу, ли вследствие ошибки или явной отмены.

Наследование


Соответствует


Оператор импорта


Swift

import CloudKit

Objective C

@import CloudKit;

Доступность


Доступный в OS X v10.10 и позже.
  • Инициализирует и возвращает объект операции, сконфигурированный, чтобы сохранить и удалить указанные записи.

    Объявление

    Swift

    convenience init!(recordsToSave records: [AnyObject]!, recordIDsToDelete recordIDs: [AnyObject]!)

    Objective C

    - (instancetype)initWithRecordsToSave:(NSArray *)records recordIDsToDelete:(NSArray *)recordIDs

    Параметры

    records

    Массив CKRecord объекты, представляющие записи для сохранения, если таковые имеются. Можно указать nil для этого параметра.

    recordIDs

    Массив CKRecordID объекты, представляющие записи, Вы хотите удалить, если таковые имеются. Можно указать nil для этого параметра.

    Возвращаемое значение

    Инициализированный объект операции.

    Обсуждение

    Записи, которые Вы намереваетесь сохранить или удалить, должны все находиться в той же базе данных, которую можно указать при конфигурировании объекта операции. Сохранение записи, которая не находится в текущей базе данных, создает ее в базе данных. Попытка удалить запись, не существующую в текущей базе данных, возвращает ошибку для той записи.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • recordsToSave recordsToSave Свойство

    Записи для сохранения к базе данных.

    Объявление

    Swift

    var recordsToSave: [AnyObject]!

    Objective C

    @property(nonatomic, copy) NSArray *recordsToSave

    Обсуждение

    Это свойство содержит массив CKRecord объекты, которые Вы хотите сохранить. Начальное содержание массива установлено в записи, которые Вы указали в initWithRecordsToSave:recordIDsToDelete: метод. Можно изменить этот массив по мере необходимости прежде, чем выполнить работу. Записи должны все предназначаться для той же базы данных, но могут принадлежать различным зонам в базе данных.

    Если Вы намереваетесь изменить значение этого свойства, сделайте так прежде, чем выполнить работу или представить объект операции очереди.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • IDs записей для удаления постоянно из базы данных.

    Объявление

    Swift

    var recordIDsToDelete: [AnyObject]!

    Objective C

    @property(nonatomic, copy) NSArray *recordIDsToDelete

    Обсуждение

    Это свойство содержит массив CKRecordID объекты, идентифицирующие записи для удаления. Начальное содержание массива установлено в записи, которые Вы указали в initWithRecordsToSave:recordIDsToDelete: метод.

    Если Вы намереваетесь изменить значение этого свойства, сделайте так прежде, чем выполнить работу или представить объект операции очереди.

    При удалении записей объект операции сообщает о прогрессе только относительно записей, которые Вы указываете в этом свойстве. Если существует отношение находившееся в собственности владельцев между записями, включающими a, удаление записей может инициировать удаление связанных записей CKReference объект. Когда дополнительные удаления происходят, о них не сообщают блокам прогресса этого объекта. По этой причине важно понять импликации модели владения, которую Вы используете при связи записей друг на друга через a CKReference объект. Для получения дополнительной информации об отношениях находившихся в собственности владельцев, см. Ссылку класса CKReference.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • savePolicy savePolicy Свойство

    Политика применяться, когда сервер содержит более новую версию определенной записи.

    Объявление

    Swift

    var savePolicy: CKRecordSavePolicy

    Objective C

    @property(nonatomic, assign) CKRecordSavePolicy savePolicy

    Обсуждение

    Каждая запись имеет тег изменения, позволяющий серверу отслеживать, когда была сохранена та запись. При сохранении записи CloudKit сравнивает тег изменения в локальной копии записи с той на сервере. Если два тега не соответствуют — подразумевать, что существует потенциальный конфликт — сервер использует значение в этом свойстве, чтобы определить, как продолжить.

    Значение по умолчанию этого свойства CKRecordSaveIfServerRecordUnchanged. Если Вы намереваетесь изменить значение этого свойства, сделайте так прежде, чем выполнить работу или представить объект операции очереди.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Непрозрачный маркер, полученный при выборке изменений для ряда записей.

    Объявление

    Swift

    @NSCopying var clientChangeTokenData: NSData!

    Objective C

    @property(nonatomic, copy) NSData *clientChangeTokenData

    Обсуждение

    Когда Вы выбираете изменения в ряде записей с помощью a CKFetchRecordChangesOperation объект, Вы получаете непрозрачный маркер данных, идентифицирующий запрос выборки на текущее устройство. При изменении записей от той работы выборки укажите тот же маркер в этом свойстве. CloudKit использует маркер для отслеживания изменений, которые Вы внесли в записи и оптимизировать информацию, которую это отправляет в сервер. Например, вместо того, чтобы отправить все содержание записи, это могло бы отправить только поля, значения которых изменились. После использования маркера можно выбросить его. После того, как маркер используется, CloudKit игнорирует последующие запросы модификации, включающие тот же маркер.

    Как правило, Вы указываете nil для этого свойства, если изменения не происходили из выборки с помощью a CKFetchRecordChangesOperation объект. Значение по умолчанию nil.

    Если Вы намереваетесь изменить значение этого свойства, сделайте так прежде, чем выполнить работу или представить объект операции очереди.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Булево значение, указывающее, перестала ли вся работа работать, когда не могут быть записаны одна или более записей в той же зоне.

    Объявление

    Swift

    var atomic: Bool

    Objective C

    @property(nonatomic, assign) BOOL atomic

    Обсуждение

    Изменение записей атомарно препятствует тому, чтобы Вы обновили свои данные в пути, который оставил бы его в противоречивом состоянии. Когда Вы хотите записать многократные записи на ту же рекордную зону, Вы используете атомарные обновления. Если существует отказ изменить какую-либо из записей в определенной зоне, никакие изменения не внесены в другие записи в той же самой зоне. Сама зона должна иметь CKRecordZoneCapabilityAtomic возможность этого поведения применяться. Если рекордная зона не поддерживает атомарную возможность, устанавливание этого свойства не имеет никакого эффекта.

    Значение по умолчанию этого свойства YEStrue, который заставляет все модификации в единственной рекордной зоне быть сделанными атомарно. Если Ваш объект операции содержит записи в многократных рекордных зонах, отказ в одной зоне не предотвращает модификации к записям в различной зоне. Изменение значения этого свойства к NOfalse заставляет записи быть измененными индивидуально, независимо от того, поддерживает ли рекордная зона атомарные модификации.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Блок для выполнения с информацией о прогрессе для отдельной записи.

    Объявление

    Swift

    var perRecordProgressBlock: ((CKRecord!, Double) -> Void)!

    Objective C

    @property(nonatomic, copy) void (^perRecordProgressBlock)( CKRecord *record, double progress)

    Обсуждение

    Блок не возвращает значения и берет следующие параметры:

    record

    CKRecord объект, который находится в процессе того, чтобы быть сохраненным.

    progress

    Сумма прогресса к сохранению записи, выраженной как процент ее общего размера. Это значение является числом между 0.0 и 1.0, где 0.0 средние значения ни одна из записи не сохраняется и 1.0 означает, что была сохранена вся запись.

    Объект операции выполняет этот блочный нуль или больше раз для каждой записи в recordsToSave свойство. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы.

    Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди. Используйте этот блок, чтобы отследить продолжающийся прогресс работы загрузки и возможно предоставить обратную связь пользователю.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Блок для выполнения, когда известны результаты сохранения единственной записи.

    Объявление

    Swift

    var perRecordCompletionBlock: ((CKRecord!, NSError!) -> Void)!

    Objective C

    @property(nonatomic, copy) void (^perRecordCompletionBlock)( CKRecord *record, NSError *error)

    Обсуждение

    Блок не возвращает значения и берет следующие параметры:

    record

    A CKRecord возразите, что Вы попытались сохранить.

    error

    Ошибочный объект, содержащий информацию о проблеме, или nil если запись была сохранена успешно.

    Этот блок выполняется один раз для каждой записи в recordsToSave свойство. Каждый раз, когда блок выполняется, он выполняется последовательно относительно других блоков прогресса работы.

    Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди. Используйте этот блок для принятия любых мер после того, как будет известно состояние сохранения записи.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Блок для выполнения после состояния всех изменений известен.

    Объявление

    Swift

    var modifyRecordsCompletionBlock: (([AnyObject]!, [AnyObject]!, NSError!) -> Void)!

    Objective C

    @property(nonatomic, copy) void (^modifyRecordsCompletionBlock)( NSArray *savedRecords, NSArray *deletedRecordIDs, NSError *operationError)

    Обсуждение

    Блок не возвращает значения и берет следующие параметры:

    savedRecords

    Массив CKRecord объекты Вы попытались сохранить.

    deletedRecordIDs

    Массив CKRecordID объекты, соответствующие записям, Вы попытались удалить.

    operationError

    Ошибочный объект, содержащий информацию о проблеме, или nil если результаты сохраняются успешно.

    Этот блок выполняется только один раз и представляет Ваш последний шанс обработать результаты работы. Это выполняется после того, как все отдельные блоки прогресса завершились, но перед блоком завершения работы. Блок выполняется последовательно относительно других блоков прогресса работы.

    Если Вы намереваетесь использовать этот блок для обработки результатов, установите его прежде, чем выполнить работу или представить объект операции очереди.

    Этот блок сообщает об ошибке типа CKErrorPartialFailure когда это сохраняет или удаляет только некоторые записи успешно. userInfo словарь ошибки содержит a CKPartialErrorsByItemIDKey ключ, значение которого NSDictionary объект. Ключами того словаря является IDs записей, не сохраненных или удаленных, и соответствующие значения являются ошибочными объектами, содержащими информацию о том, что произошло.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Константы, указывающие политику применяться при сохранении записей.

    Объявление

    Swift

    enum CKRecordSavePolicy : Int { case IfServerRecordUnchanged case ChangedKeys case AllKeys }

    Objective C

    typedef enum : NSInteger { CKRecordSaveIfServerRecordUnchanged = 0, CKRecordSaveChangedKeys = 1, CKRecordSaveAllKeys = 2, } CKRecordSavePolicy;

    Константы

    • IfServerRecordUnchanged

      CKRecordSaveIfServerRecordUnchanged

      Политика, сохраняющая запись, только если локальная копия записи основывается на записи все еще на сервере. Сервер поддерживает тег изменения для каждой записи автоматически. При выборке записи тот тег изменения включен с остальной частью данных записи. Если тег изменения в Вашей локальной записи соответствует тег изменения записи на сервере, доходы работы сохранения обычно. Если запись сервера содержит более новый тег изменения, запись не сохраняется и ошибка типа CKErrorServerRecordChanged сообщается.

      Доступный в OS X v10.10 и позже.

    • ChangedKeys

      CKRecordSaveChangedKeys

      Политика, сохраняющая только те поля записи, фактически изменившейся, перезаписывая любые значения в настоящее время на сервере. Неизмененные поля оставляют нетронутыми.

      Доступный в OS X v10.10 и позже.

    • AllKeys

      CKRecordSaveAllKeys

      Политика, сохраняющая все ключи записи (включая тех, которые не изменились) к серверу, перезаписывая любые значения в настоящее время на сервере. Ключевое настоящее только на сервере остается неизменным.

      Для записи сервера возможно содержать ключи, не присутствующие локально. Другой клиент, возможно, добавил ключи к записи со времени, Вы выбрали запись. Кроме того, если Вы использовали desiredKeys свойство для запроса только подмножества ключей во время предыдущей работы выборки, сохраняя тот же самый рекордный объект изменило бы только выбранные ключи и любые ключи, добавленные к записи с тех пор.

      Доступный в OS X v10.10 и позже.

    Оператор импорта

    Objective C

    @import CloudKit;

    Swift

    import CloudKit

    Доступность

    Доступный в OS X v10.10 и позже.