我在用户登录成功后遇到了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)
}
}
}
任何帮助表示赞赏。
答案 0 :(得分:2)
通常结果可以解释为快速字典[String:Any]。因此,您可以尝试将结果转换为[String:Any],然后尝试将该电子邮件作为字符串。
if let result = result as? [String: Any] {
if let email = result["email"] as? String {
print(email)
}
}