2017-12-27 246 views
0

我在用戶登錄成功後遇到了Facebook SDK(swift 4,Xcode 9)的問題,即時嘗試回覆關於用戶帳戶的一些細節,例如他們的電子郵件地址,姓名和圖片。FBSDKGraphRequest使用結果對象的問題

但下面的代碼給的我一個編譯器錯誤在這條線

if let email = result["email"] as? String 

這是我得到的錯誤。

可選類型'Any?'的值?不打開;你的意思是使用'!' 或'?'?

下面是具有獲取用戶配置文件信息的代碼的全部功能。我已經嘗試了很多種可選的測試,使用'!'但都會導致編譯器錯誤。

func fetchProfile() { 
     print("in fetch profile") 

     let parameters = ["fields": "email, first_name, last_name, picture.type(large)"] 
     FBSDKGraphRequest(graphPath: "me", parameters: parameters).start { (connection, result, error) -> Void in 

      print("In FBSDKGraphRequest") 

      print(result) 
      if error != nil { 
       print(error as Any) 
       return 
      } 

      if let email = result["email"] as? String 
      { 
       print(email) 
      } 
     } 
    } 

任何幫助表示讚賞。

回答

2

通常結果可以解釋爲一個快速字典[字符串:任何]。因此,您可以嘗試將結果轉換爲[String:Any],然後嘗試將電子郵件作爲字符串。

if let result = result as? [String: Any] { 
    if let email = result["email"] as? String { 
     print(email) 
    } 
} 
+0

謝謝你,好吧,我沒意識到你可以把雙方的哈希值和值。我會標記爲答案。 –