如何通过各种参数向Alamofire POST请求添加完成处理程序

时间:2019-01-12 15:05:12

标签: swift alamofire swifty-json promisekit

我需要向我的auth API发出POST请求,以在用户登录时检索Java Web令牌,但是由于Alamofire请求是异步的,所以我不知道如何迅速实现完成处理程序或Promise。

我制作了一个函数,每次用户发送凭据时都会调用它,它具有3个参数(版本(专业版,专业版,精简版,电子邮件,密码),它在API上发布并检索带有令牌的JSON,然后我得到使用SwiftyJSON将该令牌数据保存为字符串,我的问题是我不太了解完成处理程序或Promise的工作方式,因此我的数据丢失了,因为Alamofire异步运行并且该函数返回了存储在令牌var中的空值在检索,解析并保存JSON之前,因此始终返回空字符串。

这是我函数的代码:

public func AlamoToken(version: Bool, username: String, password: 
String)-> String 
{

        var token = String()
        let apiRouteSelection = DefineVersion(version: version)
        let parameters: Parameters =
            ["Email": username,
            "Password": password]

Alamofire.request(apiRouteSelection, method: .post, parameters: parameters).responseJSON { response in

    let json = JSON(response.result.value as Any)
    print ((json)) //Here i successfully get the JSON doc
    token = json["token"].string!
    print (("The token is: ", token)) //it prints token as expected
    }
print((token)) //prints ""
return token
}

我认为我需要实现Promise或完成处理程序,但是我尝试过的所有方法都无法正常工作,我还具有PromiseKit,因此也可以正常工作,但我不知道:(

编辑:正如我在答复中所述,这是不可重复的,另一个问题甚至没有使用AlamoFire或PromiseKit,请重新提交。

0 个答案:

没有答案