0

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

谢谢!

4

1 回答 1

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)")
            }
        })
于 2014-10-05T21:37:43.120 回答