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)