“从CloudKit查询时出现致命错误:在展开Optional值时意外发现nil”

时间:2017-07-12 13:38:27

标签: fatal-error cloudkit unwrap

我正在尝试使用以下代码从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是零?

2 个答案:

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