【问题标题】:"Fatal error: unexpectedly found nil while unwrapping an Optional value" while querying from CloudKit“致命错误:从 CloudKit 查询时在展开可选值时意外发现 nil”
【发布时间】:2017-07-12 13:38:27
【问题描述】:

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

【问题讨论】:

    标签: fatal-error cloudkit unwrap


    【解决方案1】:

    您的应用必须为 userDiscoverability 成功 requestApplicationPermission 才能fetchUserRecordID

    【讨论】:

    • 谢谢,我该怎么做?
    【解决方案2】:

    测试值是否为 nil 的代码如下所示。桑的回答也许是对的;如果用户没有在您运行它的设备上登录他的 appleID,我猜它也可能是 nil。

    if self.currentuserID = userID {
    // do something with self.currentuserID (the unwrapped value of userID)
    } else {
    // do something now that we know userID is nil
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 2016-02-29
      • 2020-09-19
      • 2016-01-08
      相关资源
      最近更新 更多