Facebook iOS SDK和Swift-如何创建相关的批处理请求? [英] Facebook iOS SDK & Swift - How do I create dependent batch requests?

查看:89
本文介绍了Facebook iOS SDK和Swift-如何创建相关的批处理请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当第二个(子)请求依赖于第一个(父)请求时,我试图弄清楚如何编写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.

  1. me/albums?fields = name,cover_photo<-获取用户相册请求

  1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆