CloudKit - Как получить ckRecordID записи, только что сохраненной, используя CKModifyRecordsOperation - PullRequest
0 голосов
/ 22 сентября 2018

Я использую CoreData для хранения локального кэша записей в CloudKit.При сохранении новой записи я делаю следующее:

  1. Вставка записи в CoreData.Я отмечаю эту запись как не обновленную в CloudKit.На всякий случай, если мой CKModifyRecordsOperation не работает, я все равно могу позже обновить его до CloudKit, используя этот флаг.
  2. Вставить запись в CloudKit, используя CKModifyRecordsOperation.
  3. Попробуйте извлечь ckRecordID записи, вставленной вшаг 2.(Вот где моя логика терпит неудачу, так как я не уверен, как мне этого добиться).У меня нет никаких других ключей (ссылки) и я хочу использовать только CKRecordID в качестве ссылки между CoreData и CloudKit.
  4. Обновите ckRecordID (полученный на шаге 3) до CoreData.

Какова была бы лучшая логика для решения вышесказанного?Спасибо за ваше время и ответы.

1 Ответ

0 голосов
/ 22 сентября 2018

Я решил эту проблему, создав CKRecordID локально и обновив его в CloudKit.Ниже приводится цитата из документации Apple:

Чтобы назначить пользовательский идентификатор записи для новой записи, сначала необходимо создать объект CKRecordID.Вам необходимо знать предполагаемое имя и информацию о зоне для этой записи, что также может потребовать создания объекта CKRecordZone.ID.После создания объекта идентификатора записи инициализируйте новую запись, используя метод init (__ recordType: recordID :).

Вот мой код:

let zone = CKRecordZone(zoneName: Schema.Zone.group)
let uuid = NSUUID()
let recordType = Schema.RecordType.group
let recordName = uuid.uuidString
let recordID = CKRecordID(recordName: recordName, zoneID: zone.zoneID)
let newRecord = CKRecord(recordType: recordType, recordID: recordID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...