我在CloudKit中保存和查询记录有很多初步成功。现在我被困在一些简单的事情上。对于每个用户,我想保存他的CloudKit用户ID,以便他们可以查看已保存记录的列表。
我认为completionHandler提供了保存的记录,填充了有用的元信息。这是我的completionHandler函数的开始:
func recordSaved(record: CKRecord?, error: NSError?) {
if (record != nil) {
var myUserRecordID:CKRecordID = record!.creatorUserRecordID
let UserRecordIDToStore = NSKeyedArchiver.archivedDataWithRootObject(myUserRecordID)
plist.setValue(UserRecordIDToStore, forKey: "lastCKRecordID")
}
此保存操作完成后调用:
publicDatabase.saveRecord(newRecord, completionHandler: recordSaved)
但是,在if之后的第一行(以“var ...”开头),我收到以下错误消息:“致命错误:在解包可选值时意外发现nil”。我不明白为什么这是零。
请帮助: 1.解释我做错了什么 2.有关保存用户ID以供将来查询使用的任何提示。
谢谢!
答案 0 :(得分:0)
没关系。这是答案(只需将其作为独立代码使用):
CKContainer.defaultContainer().fetchUserRecordIDWithCompletionHandler({ userRecordID, error in
if error == nil {
let UserRecordIDToStore = NSKeyedArchiver.archivedDataWithRootObject(userRecordID)
plist.setValue(UserRecordIDToStore, forKey: "userCKRecordID")
println("User identified as: \(userRecordID.description)")
} else {
println("Can not identify user due to error: \(error.localizedDescription)")
}
})