Facebook iOS SDK和Swift-如何创建相关的批处理请求? [英] Facebook iOS SDK & Swift - How do I create dependent batch requests?
问题描述
当第二个(子)请求依赖于第一个(父)请求时,我试图弄清楚如何编写FB Graph API请求(FB SDK 4.0和Swift).具体来说,我想获取用户的相册和每张相册的封面照片.
I'm trying to figure out how to compose FB Graph API requests (FB SDK 4.0 and Swift) when the second (child) request is dependent on the first (parent) request. Specifically I would like to get a user's albums and each album's cover photo.
-
me/albums?fields = name,cover_photo<-获取用户相册请求
me/albums?fields=name,cover_photo <-- Get user albums request
/888474748<-获取封面照片请求
/888474748 <-- Get cover photo request
关于此文档和 FBSDKGraphRequestConnection 提到方法 addRequest:completionHandler:batchParameters:可以接受诸如名称"和"depends_on"之类的参数.这似乎是我正在寻找的方法,但是我可以找到在Obj-C或Swift中使用它的示例.
The documentation is very vague regarding this and API docs for FBSDKGraphRequestConnection mention that method addRequest:completionHandler:batchParameters: can accept parameters such as "name" and "depends_on". This appears to be the method I'm looking for but I can find an example of its use in Obj-C or Swift.
看起来应该是这样吗?谢谢!
Should it look something like this? Thanks!
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()
这篇关于Facebook iOS SDK和Swift-如何创建相关的批处理请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!