保存CloudKit记录后如何保存用户ID

时间:2014-10-05 16:54:56

标签: ios swift cloudkit

我在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以供将来查询使用的任何提示。

谢谢!

1 个答案:

答案 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)")
            }
        })