我正在尝试使用以下代码从CloudKit获取当前用户的第一个名称:
func getUserFirstName() -> String{
var firstNameFromFunction: String?
var currentuserID : CKRecordID?
container.fetchUserRecordID(completionHandler: {
userID, error in
if ((error == nil)) {
self.currentuserID = userID!
}
})
container.discoverUserInfo(withUserRecordID: currentuserID!, completionHandler: {userInfo, error in
let firstNameFromFunction = (userInfo!.displayContact?.givenName)!
})
return firstNameFromFunction!
}
但是执行时,currentUserID为nil,并产生致命错误。有谁知道为什么currentUserID是零?
答案 0 :(得分:0)
您的应用必须成功 requestApplicationPermission userDiscoverability 才能 fetchUserRecordID 。
答案 1 :(得分:0)
测试值是否为零的代码如下所示。圣也许他的回答是正确的;如果用户没有在你运行它的设备上登录他的appleID,我猜它也可能是零。
if self.currentuserID = userID {
// do something with self.currentuserID (the unwrapped value of userID)
} else {
// do something now that we know userID is nil
}