2015-02-12 25 views
2

我正在設置一個用戶可以創建記錄的應用程序。假設他/她是聊天室的所有者。因此聊天室記錄中有一個名爲「admin」的屬性。該屬性需要一個引用,它是所有者的ID。cloudkit輸入用戶ID作爲新記錄的參考(代碼中)

這裏是我的嘗試:

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轉換爲字符串。

當我直接傳遞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(編碼器:...) 2 :CKReference(record:...,action:...) 3:CKReference(recordID:...,action:...) 當我輸入daMainUser.setObject(CKReference(recordID:userRecordID,forKey:「用戶「) 我得到一個錯誤:。額外的參數呼叫‘的recordId’ 我的Xcode版本6.1.1是不知道是否可以幫助 – 2015-02-12 16:08:52

+0

對不起,這是一個切割和過去的錯誤我固定答案: – 2015-02-12 19:59:16

+0

非常感謝您的回答,我很感激,但看起來我在這一次面臨運氣不好。正確的行,但記錄的「用戶」引用仍爲空,而其他屬性(日期,名稱)成功保存。任何想法? – 2015-02-13 01:35:24

相關問題