Как инициализировать CKRecord с помощью zoneID и recordID?


В настоящее время я создаю решение для синхронизации записей Core Data с записями CloudKit.

Мне нужна помощь, чтобы выяснить, что я хочу сделать с CKRecord возможно. Я проверил документацию Apple CloudKit, экспериментировал и искал в интернете, но не нашел нужного мне ответа.

Я хотел бы инициализировать CKRecord с помощью zoneID, а также recordID, которые я бы предоставил в методе init.
Инициализатор, похоже, заставляет меня выбирать между ними. Я хочу создайте свой собственный ZoneID (не используя default), а также установите recordID вместо его автогенерации.

Возможно ли это?

1 3

1 ответ:

Вы можете указать как идентификатор зоны, так и идентификатор записи, но это нужно сделать в три этапа:

Сначала создайте CKRecordZoneID с вашим идентификатором зоны и пользователем:

let ckRecordZoneID = CKRecordZoneID(zoneName: "myZone", ownerName: CKOwnerDefaultName)

Затем вы можете создать CKRecordID с требуемым идентификатором записи и указать ваш CKRecordZoneID:

let ckRecordID = CKRecordID(recordName: recordIDString, zoneID: ckRecordZoneID)

Наконец, вы можете создать CKRecord, используя этот идентификатор записи:

let ckRecord = CKRecord(recordType: myRecordType, recordID: ckRecordID)