cloudkit输入userID作为新记录的引用(在代码中)

时间:2015-02-12 00:13:12

标签: swift cloudkit ckreference

我正在设置一个用户可以创建记录的应用。让我们说他/她是聊天室的所有者。因此,有一个名为" admin"在聊天记录中。此属性采用引用,该引用是所有者的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转换为String。

当我直接传递userRecordID时,出现错误: ' CKRecordID'与CKRecordValue'

不同

我一直在寻找,但我找不到更多有关此事的信息。

非常感谢任何帮助。谢谢你们!

1 个答案:

答案 0 :(得分:3)

如果您的用户字段设置为CKReference字段,则应将其设置为:

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

在您的情况下,您不必创建recordID,因为您已经拥有它。否则你必须用以下内容创建它:

var recordID = CKRecordID(recordName: userRecordID.recordName)