2015-02-12 2 views
2

Я устанавливаю приложение, в котором пользователь может создавать записи. Предположим, он/она является владельцем чата. Поэтому в записи чата есть атрибут «admin». Этот атрибут принимает ссылку, которая является идентификатором владельца.cloudkit введите userID как ссылку новой записи (в коде)

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

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»

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

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

ответ

3

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

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

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

var recordID = CKRecordID(recordName: userRecordID.recordName) 
+0

Привет, Эдвин, большое спасибо за ваш ответ. Проблема в том, что когда я открываю круглые скобки после CKReference, я не могу выбрать (recordID: ..., forKey: ...) Вместо этого могу выбрать только 1: CKReference (coder: ...) 2 : CKReference (запись: ..., действие: ...) 3: CKReference (recordID: ..., action: ...) Когда я ввожу daMainUser.setObject (CKReference (recordID: userRecordID, forKey: " user ") Я получаю сообщение об ошибке: Дополнительный аргумент 'recordID' в вызове Моя версия Xcode 6.1.1 не знает, может ли это помочь. –

+0

извините, это была ошибка разреза и прошлого. Ответ: –

+0

Большое спасибо за ваш ответ. Я ценю это. Но похоже, что я столкнулся с неудачей на этом. правильная строка сверху, но «пользовательская» ссылка на запись по-прежнему пуста, а другие атрибуты (дата, имя), где успешно сохранены. Есть идеи? –

Смежные вопросы