2015-09-02 99 views
0

我想检查一下,如果我当前的Facebook令牌(它存在)仍然具有用户授予的所有必需权限。解析Facebook SDK FBSDKGraphRequest结果

所以我所说的图形检索与我的令牌相关联的所有已授予的权限:

FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "permissions"]).startWithCompletionHandler({ (connection, result, error) -> Void in 
     var resultDictionary:NSDictionary! 

     if (error != nil) { 
      println("ERROR = \(error)") 
     } 
     else { 
      resultDictionary = result as! NSDictionary 
      println("1: ---- SUCCESS (result) ----") 
      println("\(result)") 

// this doesn´t work: 
//    var test = resultDictionary.objectForKey("permissions")?.objectForKey("data")! ?? nil 
//    var count = test.count 
//    println("---- test (\(count))") 
//    println(test) 

     } 
    }) 

来自Facebook的结果是:

{ 
id = 646571222102633; 
permissions =  { 
    data =   (
        { 
      permission = "user_friends"; 
      status = granted; 
     }, 
        { 
      permission = "publish_actions"; 
      status = granted; 
     }, 
        { 
      permission = "public_profile"; 
      status = granted; 
     } 
    ); 
}; 
} 

因为有可能是没有/一个/很多权限,我想遍历权限/数据下的结果部分。

但我不熟悉这个NSDictionary转换成的东西,我可以count元素下和iterate通过。

任何帮助?

回答

0

Got it!

FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "permissions"]).startWithCompletionHandler({ (connection, result, error) -> Void in 
     var resultDictionary:NSDictionary! 

     if (error != nil) { 
      DebugOutput("ERROR = \(error)") 
     } 
     else { 
      resultDictionary = result as! [String: AnyObject] 

      println("---- SUCCESS (result) ----") 
      println("\(result)") 

      var test = resultDictionary.objectForKey("permissions")?.objectForKey("data")! as! [[String:AnyObject]] 
      var count = test.count 
      println("---- test (\(count))") 
      println(test) 

     } 
    }) 

非常感谢到:http://ustwo.github.io/tech-blog/2014/08/01/ios-swift-dictionaries/