2017-12-27 325 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

谢谢你,好吧,我没意识到你可以把双方的哈希值和值。我会标记为答案。 –