cloudkit 输入用户 ID 作为新记录的参考(在代码中)
cloudkit enter userID as reference of a new record (in code)
我正在设置一个用户可以在其中创建记录的应用程序。假设 he/she 是聊天室的所有者。因此聊天室记录中有一个名为 "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'
不同
我到处都在找,但我找不到关于这个的更多信息。
如有任何帮助,我们将不胜感激。谢谢大家!
如果您的用户字段设置为 CKReference 字段,那么您应该这样设置:
daMainUser.setObject(CKReference(recordID: userRecordID, action: CKReferenceAction.None), forKey: "user")
在您的情况下,您不必创建 recordID,因为您已经有了它。否则你必须用类似的东西来创建它:
var recordID = CKRecordID(recordName: userRecordID.recordName)
我正在设置一个用户可以在其中创建记录的应用程序。假设 he/she 是聊天室的所有者。因此聊天室记录中有一个名为 "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'
不同我到处都在找,但我找不到关于这个的更多信息。
如有任何帮助,我们将不胜感激。谢谢大家!
如果您的用户字段设置为 CKReference 字段,那么您应该这样设置:
daMainUser.setObject(CKReference(recordID: userRecordID, action: CKReferenceAction.None), forKey: "user")
在您的情况下,您不必创建 recordID,因为您已经有了它。否则你必须用类似的东西来创建它:
var recordID = CKRecordID(recordName: userRecordID.recordName)