使用结果对象的FBSDKGraphRequest问题

时间:2017-12-27 14:26:11

标签: swift xcode fbsdk

我在用户登录成功后遇到了Facebook SDK(swift 4,Xcode 9)的问题,我试图撤回有关用户帐户的一些详细信息,例如他们的电子邮件地址,姓名和图片。

但是下面的代码在这一行给出了编译错误

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

这是我得到的错误。

  

可选类型的值'任何?'没有打开;你的意思是使用'!'   或者'?'?

这是包含获取用户个人资料信息的代码的完整功能。我已尝试过各种各样的可选测试,使用'!'但都会导致编译错误。

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)
            }
        }
    }

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

通常结果可以解释为快速字典[String:Any]。因此,您可以尝试将结果转换为[String:Any],然后尝试将该电子邮件作为字符串。

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