cloudkit введите userID как ссылку на новую запись (в коде)

Я устанавливаю приложение, в котором пользователь может создавать записи. Допустим, он / она является владельцем чата. Поэтому в записи чата есть атрибут "admin". Этот атрибут принимает ссылку, которая является идентификатором владельца.

Вот что я попробовал:

CKContainer.defaultContainer().fetchUserRecordIDWithCompletionHandler({
            userRecordID, error in
            if error != nil {
                println("caca")
            } else {
                println("gettin close")
                let UserRecordIDToStore = NSKeyedArchiver.archivedDataWithRootObject(userRecordID)
                let iDString = userRecordID.recordName as String
                daMainUser.setObject(iDString, forKey: "user")
            }
            })

Когда я передаю iDString, как описано выше, и создаю запись (комнату), ее ссылка на администратор становится пустой. Независимо от того, бросил ли я iDString как String или нет.

Когда я передаю userRecordID напрямую, я получаю сообщение об ошибке: "CKRecordID" не идентичен "CKRecordValue"

Я искал везде, но я не могу найти больше информации об этом.

Любая помощь будет принята с благодарностью. Спасибо вам, ребята!

1 ответ

Решение

Если ваше пользовательское поле настроено как поле CKReference, то вы должны установить его следующим образом:

daMainUser.setObject(CKReference(recordID: userRecordID, action: CKReferenceAction.None), forKey: "user")

В вашем случае вам не нужно создавать идентификатор записи, потому что он у вас уже есть. В противном случае вы должны были создать что-то вроде:

var recordID = CKRecordID(recordName: userRecordID.recordName)
Другие вопросы по тегам