2014-10-05 80 views
0

我在保存和查询CloudKit中的记录方面有很多初始成功。现在我陷入了一件容易的事情。对于每个用户,我想保存他的CloudKit用户ID,以便他们可以查看其保存记录的列表。如何在保存CloudKit记录后保存用户ID

我认为completionHandler提供了保存的记录,填充了有用的元信息。这是我completionHandler FUNC开始:

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) 

然而,在之后的第一行,如果(从“无功... “)我收到以下错误消息:”致命错误:意外地发现零而解包可选值“。我不明白为什么这是零。

请帮助: 1.解释我做错了什么 2.有关保存用户ID以供将来查询使用的任何提示。

谢谢!

回答

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