2

我正在设置一个用户可以在其中创建记录的应用程序。假设他/她是聊天室的所有者。因此聊天室记录中有一个名为“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 转换为字符串。

当我直接传递 userRecordID 时,我收到一个错误:“CKRecordID”与“CKRecordValue”不同

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

任何帮助将不胜感激。感谢你们!

4

1 回答 1

3

如果您的用户字段设置为 CKReference 字段,那么您应该像这样设置它:

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

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

var recordID = CKRecordID(recordName: userRecordID.recordName)
于 2015-02-12T07:12:42.080 回答