Как назначить CKRecordZone для CKRecord
Я пытаюсь создать базу данных, в которой пользователь с правами администратора может создать группу, которая хранится как тип группы CKRecord. Я хочу, чтобы эта запись была помещена в пользовательскую зону, которая названа в честь имени группы, которое выбрал пользователь с правами администратора. Как инициализировать личную запись группы, которая будет назначена этой пользовательской зоне (без использования устаревшей функции).
func createGroup(groupName: String){
let groupRecord = CKRecord(recordType: recordTypes.group)
groupRecord[groupRecordType.groupName] = groupName
let share = CKShare(rootRecord: groupRecord)
share.publicPermission = .readWrite
let groupZone = CKRecordZone(zoneName: groupName)
//Need to somehow connect the groupZone to the groupRecord
}
1 ответ
Вы можете использовать другой инициализатор CKShare:
CKShare(rootRecord: CKRecord, shareID: CKRecord.ID)
RecordZone является частью CKRecord.ID:
CKRecord.ID(recordName: String, zoneID: CKRecordZone.ID)
Так что-то вроде
func createGroup(groupName: String){
let groupRecord = CKRecord(recordType: recordTypes.group)
groupRecord[groupRecordType.groupName] = groupName
let groupZone = CKRecordZone(zoneName: groupName)
let shareID = CKRecord.ID(recordName: groupName, zoneID: groupZone)
let share = CKShare(rootRecord: groupRecord, shareID: shareID)
share.publicPermission = .readWrite
}
Хотя recordName должно быть чем-то уникальным, иначе вы можете столкнуться с проблемами.