输入“是吗?” 没有下标成员

Vys*_*akh 3 ios facebook-ios-sdk swift swift3

我尝试在我的应用程序中登录fb后检索电子邮件ID。但是,当我尝试从结果中获取值时出现错误。

错误是:Type 'Any?' has no subscript members

func fetchProfile()
{
    print("Fetch Profile")
    let parameters = ["fields": "email, first_name, last_name,  picture.type(large)"]
    FBSDKGraphRequest(graphPath: "me", parameters: parameters).start { (connection, result, error) in

        let email = result["email"] as? String  //Type 'Any?' has no subscript members error occurs here.
    }
}
Run Code Online (Sandbox Code Playgroud)

Anb*_*hik 7

改变这个

 let email = result["email"] as? String
Run Code Online (Sandbox Code Playgroud)

进入

  guard let resultNew = result as? [String:Any] 

 let email = resultNew["email"]  as! String
Run Code Online (Sandbox Code Playgroud)

完整答案

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

        guard let resultNew = result as? [String:Any] 

       let email = resultNew["email"]  as! String
    }
Run Code Online (Sandbox Code Playgroud)


sri*_*vas 7

对于 Swift 3

改变这个-->

let email = result["email"] as? String
Run Code Online (Sandbox Code Playgroud)

进入-->

if let fbemail = (result as AnyObject)["email"]! as? String
{
   print(fbemail)
}
Run Code Online (Sandbox Code Playgroud)

  • @Fogmeister,这对我不起作用,所以我发布了我的答案,因为它可能对某些人有所帮助,发布答案不会伤害任何人,他们没有必要给降分,通过 stackoverflow 你会发现许多答案而不是公认的答案。你给降分有什么问题。? (3认同)