Как назначить CKRecordZone для CKRecord - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь создать базу данных, в которой пользователь с правами администратора может создать группу, которая хранится как тип группы 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 Ответ

0 голосов
/ 27 марта 2019

Вы можете использовать другой инициализатор CKShare:

CKShare(rootRecord: CKRecord, shareID: CKRecord.ID)

Зона записи является частью 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 должно быть чем-то уникальным, иначе вы можете столкнуться с проблемами.

...