如何解包 swift 中的回调?

How to unwrap an callback in swift?

我在 Swift 中为我的应用程序使用 FB 登录,当我发出图形请求时,returns 结果如下:

Optional({
    email = "arjun.ramjams@gmail.com";
    id = 10218497873670001;
    name = "Arjun Ram";
})

现在,我应该如何阅读每个单独的值(即:电子邮件、ID 和姓名)?

result 是类型 [String:Any]?Dictionary

let result:[String:Any]? = [
    "email":"arjun.ramjams@gmail.com",
    "id" : 10218497873670001,
    "name":"Arjun Ram"
]

您可以从 result 中获取字段,例如,

let email = result?["email"] as? String
let id = result?["id"] as? Int
let name = result?["name"] as? String

您需要使用 if letguard let 来展开对象或变量 例如:

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

guard let result = result as? [String: Any] else {
    // return something
}
func fetchProfile() {
        let parameters = ["fields": "id,email, first_name, last_name"]
        GraphRequest(graphPath: "me",parameters: parameters).start{(connection, user, Err) in
            if Err != nil {
                print(Err!)
                return

            }
            let dic = user as! NSDictionary
            let userID = dic["id"] as! String
            let Email = dic["email"] as! String
            let fname = dic["first_name"] as! String
            let lname = dic["last_name"] as! String

        }

}