Facebook 图 object/entity 在 Swift 中解析 SDK 4
Facebook graph object/entity parsing SDK 4 in Swift
在Swift中,你如何解析fbk图请求的结果?我有一个嵌套字典,无法转换为 [String: String]。我已经投射到适用于级别 1 的 NSDictionary,但嵌套的任何内容都开始抱怨可选和投射。我从 changeling 中看到 FBGraphObject 已被弃用,那么现在 SDK 4 中的正确方法是什么?
我的数据看起来像
{
data = {
"is_silhouette" = 0;
url = "...";
};
}
我可以
var data = photoRes["data"] as? NSDictionary
得到
Optional({
"is_silhouette" = 0;
url = "...;
})
我不确定如何解析该对象...
编辑 现在我已经在使用
var data = photoRes["data"] as? NSDictionary
var urlStr = data!["url"] as? String
if urlStr != nil {
let url = NSURL(fileURLWithPath: urlStr!)
//my code...
}
但这是一种复杂的方法,尤其是当返回的结果高度嵌套时。有没有更好的方法来解决这个问题?
创建字典:
class ViewController: UIViewController {
var dict : NSDictionary!
}
正在获取数据:
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
self.dict = result as NSDictionary
println(self.dict)
NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as String)
}
})
}
输出应该是:
{
email = "ashishkakkad8@gmail.com";
"first_name" = Ashish;
id = 910855688971343;
"last_name" = Kakkad;
name = "Ashish Kakkad";
picture = {
data = {
"is_silhouette" = 0;
url = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfa1/v/t1.0-1/s200x200/22501_915701971820048_9046303472199214595_n.jpg?oh=f3b3564f1450c13332b3067a135cad5d&oe=55C71792&__gda__=1443571904_c4667dcb08d85682edfd77a90ee9c3ab";
};
};
}
2015-05-25 22:12:34.015 SwiftFB[2713:7830] https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfa1/v/t1.0-1/s200x200/22501_915701971820048_9046303472199214595_n.jpg?oh=f3b3564f1450c13332b3067a135cad5d&oe=55C71792&__gda__=1443571904_c4667dcb08d85682edfd77a90ee9c3ab
这个烂摊子对我有用。我正在使用 SWIFT 3.01 和 FB Swift SDK
if let responseDictionary = response.dictionaryValue {
print(responseDictionary["name"] ?? "")
let a = responseDictionary["picture"] as! NSDictionary
let b = a["data"] as! NSDictionary
let c = b["url"]
print(c ?? "")
在Swift中,你如何解析fbk图请求的结果?我有一个嵌套字典,无法转换为 [String: String]。我已经投射到适用于级别 1 的 NSDictionary,但嵌套的任何内容都开始抱怨可选和投射。我从 changeling 中看到 FBGraphObject 已被弃用,那么现在 SDK 4 中的正确方法是什么?
我的数据看起来像
{
data = {
"is_silhouette" = 0;
url = "...";
};
}
我可以
var data = photoRes["data"] as? NSDictionary
得到
Optional({
"is_silhouette" = 0;
url = "...;
})
我不确定如何解析该对象...
编辑 现在我已经在使用
var data = photoRes["data"] as? NSDictionary
var urlStr = data!["url"] as? String
if urlStr != nil {
let url = NSURL(fileURLWithPath: urlStr!)
//my code...
}
但这是一种复杂的方法,尤其是当返回的结果高度嵌套时。有没有更好的方法来解决这个问题?
创建字典:
class ViewController: UIViewController {
var dict : NSDictionary!
}
正在获取数据:
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
self.dict = result as NSDictionary
println(self.dict)
NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as String)
}
})
}
输出应该是:
{
email = "ashishkakkad8@gmail.com";
"first_name" = Ashish;
id = 910855688971343;
"last_name" = Kakkad;
name = "Ashish Kakkad";
picture = {
data = {
"is_silhouette" = 0;
url = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfa1/v/t1.0-1/s200x200/22501_915701971820048_9046303472199214595_n.jpg?oh=f3b3564f1450c13332b3067a135cad5d&oe=55C71792&__gda__=1443571904_c4667dcb08d85682edfd77a90ee9c3ab";
};
};
}
2015-05-25 22:12:34.015 SwiftFB[2713:7830] https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfa1/v/t1.0-1/s200x200/22501_915701971820048_9046303472199214595_n.jpg?oh=f3b3564f1450c13332b3067a135cad5d&oe=55C71792&__gda__=1443571904_c4667dcb08d85682edfd77a90ee9c3ab
这个烂摊子对我有用。我正在使用 SWIFT 3.01 和 FB Swift SDK
if let responseDictionary = response.dictionaryValue {
print(responseDictionary["name"] ?? "")
let a = responseDictionary["picture"] as! NSDictionary
let b = a["data"] as! NSDictionary
let c = b["url"]
print(c ?? "")