Facebook iOS SDK&Swift – 如何创build从属批量请求?

当第二个(子)请求依赖于第一个(父)请求时,我试图找出如何编写FB Graph API请求(FB SDK 4.0和Swift)。 具体来说,我想获得用户的专辑和每张专辑的封面照片。

  1. 我/相册?fields = name,cover_photo < – 获取用户相册请求

  2. / 888474748 < – 获取封面照片请求

关于这个和FBSDKGraphRequestConnection的 API文档,文档非常含糊,提到方法addRequest:completionHandler:batchParameters:可以接受诸如“name”和“depends_on”之类的参数。 这似乎是我正在寻找的方法,但我可以find它在Obj-C或Swift中使用的一个例子。

应该看起来像这样吗? 谢谢!

let albumRequest = FBSDKGraphRequest(graphPath: "me/albums?fields=name,cover_photo", parameters: nil) let albumCoverRequest = FBSDKGraphRequest(graphPath: "cover_photo_id", parameters: nil) //what should this look like? jsonpath? let graphConnection = FBSDKGraphRequestConnection() graphConnection.addRequest(albumRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in if(error != nil){ println(error) }else{ } },batchParameters: ["name" : "albums"]) graphConnection.addRequest(albumRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in if(error != nil){ println(error) }else{ } },batchParameters: ["depends_on" : "albums"]) //should this be some jsonpath expression? 

知道了。

 let albumRequest = FBSDKGraphRequest(graphPath: "me/albums?fields=name,cover_photo", parameters: nil) let albumCoverRequest = FBSDKGraphRequest(graphPath: "?ids={result=albums:$.data.*.cover_photo}", parameters: nil) // use jsonpath syntax to "inject" parent results into "child" request let graphConnection = FBSDKGraphRequestConnection() graphConnection.addRequest(albumRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in if(error != nil){ println(error) }else{ println(result) } },batchParameters: ["name" : "albums"]) //Set "parent" batch alias graphConnection.addRequest(albumCoverRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in if(error != nil){ println(error) }else{ println(result) } },batchParameters: ["depends_on" : "albums"]) //depend on parent batch alias graphConnection.start()