cloudkit 输入用户 ID 作为新记录的参考(在代码中)
Posted
技术标签:
【中文标题】cloudkit 输入用户 ID 作为新记录的参考(在代码中)【英文标题】:cloudkit enter userID as reference of a new record (in code) 【发布时间】:2015-02-12 00:13:11 【问题描述】:我正在设置一个用户可以在其中创建记录的应用。假设他/她是聊天室的所有者。因此聊天室记录中有一个名为“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”不同
我到处寻找,但找不到更多信息。
任何帮助将不胜感激。谢谢各位!
【问题讨论】:
【参考方案1】:如果您的用户字段设置为 CKReference 字段,那么您应该这样设置:
daMainUser.setObject(CKReference(recordID: userRecordID, action: CKReferenceAction.None), forKey: "user")
在您的情况下,您不必创建 recordID,因为您已经拥有它。否则,您必须使用以下内容创建它:
var recordID = CKRecordID(recordName: userRecordID.recordName)
【讨论】:
您好 Edwin,非常感谢您的回答。问题是当我输入打开CKReference之后的括号时,我无法选择(recordID:...,forKey:...)而是我只能选择1:CKReference(coder:...)2:CKReference( record: ..., action: ...) 3: CKReference(recordID: ..., action: ...) 当我输入 daMainUser.setObject(CKReference(recordID: userRecordID, forKey: "user") 我得到一个错误:调用中的额外参数 'recordID' 我的 Xcode 版本是 6.1.1 不知道是否有帮助。 对不起,那是一个过去的错误。我确定了答案。 非常感谢您的回答。我很感激。但似乎我在这方面面临着厄运。我从上面输入了正确的行,但记录的“用户”引用仍然为空,而其他属性(日期、名称)已成功保存。有什么想法吗?以上是关于cloudkit 输入用户 ID 作为新记录的参考(在代码中)的主要内容,如果未能解决你的问题,请参考以下文章
无法从 CloudKit 通知信息和用户信息结构中获取 CKRecord.ID