我的應用程序正在使用Google SDK在登錄時收集用戶名。這可以無縫工作。但是,當我按下谷歌登錄頁面上的完成按鈕時,我收到錯誤消息。 「致命錯誤:展開一個可選的值時,意外地發現無」當谷歌名稱從可選值返回零時,應用程序崩潰
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
nameString = user.profile.name
defaults.set(nameString, forKey: "userName")
defaults.set(user.profile.email, forKey: "email")
defaults.set(user.profile.imageURL(withDimension: 50)!, forKey: "image")
print("email: \(user.profile.email!)")
print("name: \(user.profile.name!)")
print("lastname: \(user.profile.familyName!)")
print("lastname: \(user.profile.imageURL(withDimension: 50))")
self.dismiss(animated: true, completion: nil)
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "UserLoggedIn"), object: nil)
所以這是我使用接收的名稱和通過userDeafaults保存它們的功能。
實際的問題是行 「nameString = user.profile.name」 因爲當您的新聞完成登錄屏幕上,您正在跳過登錄。這導致它不會從user.profile.name接收任何數據。
我該如何解決這個問題?所以如果user.profile.name不包含任何內容,它不會將名稱保存到namestring。
非常感謝som的幫助。謝謝:)
你想要做的時候'user'是什麼做'ñ il'? – vacawama
什麼也沒有,只需回到開始屏幕 –
在'nameString = ...'行之前添加一個警戒語句:'guard let user = user else {return}'。 – vacawama