Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用序列化为数据的响应数据处理程序(通过AlamoFire的Swift 3)_Swift_Alamofire - Fatal编程技术网

如何使用序列化为数据的响应数据处理程序(通过AlamoFire的Swift 3)

如何使用序列化为数据的响应数据处理程序(通过AlamoFire的Swift 3),swift,alamofire,Swift,Alamofire,有什么建议吗?我想使用func通过Alamofire调用API,但遇到了一个错误 无法将类型为“(DataResponse)->()”的值转换为预期的参数类型“(DataResponse)->Void” 代码如下: func authorize(emailAddress: String, password: String){ let base_url = ApiRoute.userLogin.url let params: [String: Any]? = [

有什么建议吗?我想使用func通过Alamofire调用API,但遇到了一个错误 无法将类型为“(DataResponse)->()”的值转换为预期的参数类型“(DataResponse)->Void”

代码如下:

func authorize(emailAddress: String, password: String){

    let base_url = ApiRoute.userLogin.url

    let params: [String: Any]? = [
        "email": emailAddress,
        "password": password
    ]

    let headers: HTTPHeaders = [
        "Content-Type": CONTENT_TYPE,
        "devtoken": API_KEY,
        "userlang": USER_LANG
    ]

    Alamofire.request(base_url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
        .validate()
        .responseJSON { (response: DataResponse<ApiLoginResult>) in
            switch(response.result) {
            case .success(_):
                if let data = response.result.value{
                    print(response.result.value)
                }
                break
            case .failure(_):
                print(response.result.error)
                break
            }
    }
}
func授权(电子邮件地址:字符串,密码:字符串){
让base_url=ApiRoute.userLogin.url
let params:[字符串:任意]?=[
“电子邮件”:电子邮件地址,
“密码”:密码
]
let头:HTTPHeaders=[
“内容类型”:内容类型,
“devtoken”:API_键,
“userlang”:USER_LANG
]
请求(基本url,方法:.post,参数:params,编码:JSONEncoding.default,头:头)
.validate()
.responseJSON{(响应:DataResponse)位于
开关(response.result){
成功案例:
如果let data=response.result.value{
打印(响应.结果.值)
}
打破
案例.失败(uu):
打印(响应.结果.错误)
打破
}
}
}
有人能告诉我如何在我的工作中实现这一点吗

    // Response Data Handler - Serialized into Data
    func responseData(queue: DispatchQueue?, completionHandler: @escaping (DataResponse<Data>) -> Void) -> Self
//响应数据处理程序-序列化为数据
func responseData(队列:DispatchQueue?,completionHandler:@escaping(DataResponse)->Void)->Self
Make

(response : DataResponse<APILoginResponse>)
而且它应该能工作。

Make


它应该可以工作。

检查以下Alamofire代码

let strURL:String = "http://xxxx"
let parameters: Parameters = ["keyword": "current_timestamp"]

Alamofire.request(strURL, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { (response) in
    print(response.data!)
                print(response.result)

                if let JSON = response.result.value {
                    print("JSON: \(JSON)")
                }
}

检查以下Alamofire代码

let strURL:String = "http://xxxx"
let parameters: Parameters = ["keyword": "current_timestamp"]

Alamofire.request(strURL, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { (response) in
    print(response.data!)
                print(response.result)

                if let JSON = response.result.value {
                    print("JSON: \(JSON)")
                }
}

使用ObjectMapper,您可以像下面这样映射对象。希望你会有你的想法

Alamofire.request(base_url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
        .validate()
        .responseJSON { (response) in
            switch(response.result) {
            case .success(_):
                if let data = response.result.value{
                  print(response.result.value)

                   //Object mapping
                    let loginResult = Mapper<ApiLoginResult>().map(data)

                }
                break
            case .failure(_):
                print(response.result.error)
                break
            }
    }
Alamofire.request(基本url,方法:.post,参数:params,编码:JSONEncoding.default,头:头)
.validate()
.responseJSON{(response)in
开关(response.result){
成功案例:
如果let data=response.result.value{
打印(响应.结果.值)
//对象映射
让loginResult=Mapper().map(数据)
}
打破
案例.失败(uu):
打印(响应.结果.错误)
打破
}
}

使用ObjectMapper,您可以像下面这样映射对象。希望你会有你的想法

Alamofire.request(base_url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
        .validate()
        .responseJSON { (response) in
            switch(response.result) {
            case .success(_):
                if let data = response.result.value{
                  print(response.result.value)

                   //Object mapping
                    let loginResult = Mapper<ApiLoginResult>().map(data)

                }
                break
            case .failure(_):
                print(response.result.error)
                break
            }
    }
Alamofire.request(基本url,方法:.post,参数:params,编码:JSONEncoding.default,头:头)
.validate()
.responseJSON{(response)in
开关(response.result){
成功案例:
如果let data=response.result.value{
打印(响应.结果.值)
//对象映射
让loginResult=Mapper().map(数据)
}
打破
案例.失败(uu):
打印(响应.结果.错误)
打破
}
}

GetRequest
Alamofire
swift3代码中

func getWebServicesFromAlamofireGetRequest() {

    self.myActivity.startAnimating()
    Alamofire.request("http:xxxx.com", method: .get, parameters: ["":""], encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

        self.myActivity.stopAnimating()
        switch(response.result) {
        case .success(_):
            if response.result.value != nil {
                let jsonResponce = response.result.value as! NSDictionary

                print(jsonResponce)
            }
            break

        case .failure(_):
            print(response.result.error!)
            break

        }
    }
}
func getWebServicesFromAlamofireGetRequest()函数{
self.myActivity.startAnimating()
Alamofire.request(“http:xxxx.com”,方法:.get,参数:[”“:”“],编码:URLEncoding.default,头:nil).responseJSON{(响应:DataResponse)in
self.myActivity.stopAnimating()
开关(response.result){
成功案例:
如果response.result.value!=nil{
将jsonresponse=response.result.value设为!NSDictionary
打印(JSONResponse)
}
打破
案例.失败(uu):
打印(响应。结果。错误!)
打破
}
}
}

GetRequest
Alamofire
swift3代码中

func getWebServicesFromAlamofireGetRequest() {

    self.myActivity.startAnimating()
    Alamofire.request("http:xxxx.com", method: .get, parameters: ["":""], encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

        self.myActivity.stopAnimating()
        switch(response.result) {
        case .success(_):
            if response.result.value != nil {
                let jsonResponce = response.result.value as! NSDictionary

                print(jsonResponce)
            }
            break

        case .failure(_):
            print(response.result.error!)
            break

        }
    }
}
func getWebServicesFromAlamofireGetRequest()函数{
self.myActivity.startAnimating()
Alamofire.request(“http:xxxx.com”,方法:.get,参数:[”“:”“],编码:URLEncoding.default,头:nil).responseJSON{(响应:DataResponse)in
self.myActivity.stopAnimating()
开关(response.result){
成功案例:
如果response.result.value!=nil{
将jsonresponse=response.result.value设为!NSDictionary
打印(JSONResponse)
}
打破
案例.失败(uu):
打印(响应。结果。错误!)
打破
}
}
}

post code here not screenshot。那么你在对象映射方面有问题吗?是的,在对象映射中,如果我使用带有(response:DataResponse)到(response)的简单alamofire,它是有效的,但是我需要传递数据,因为我使用的是对象映射替换为这个
responseJSON{(response:DataResponse)在
中检查我的答案。在这里发布代码而不是屏幕截图。那么你在对象映射方面有问题吗?是的,在对象映射中,如果我使用带有(响应:DataResponse)到(响应)的简单alamofire,它可以工作,但是我需要传递数据,因为我使用的是对象映射替换为这个
responseJSON{(响应:DataResponse)在
中检查我的答案。let loginResult=Mapper().map(JSONObject:data)感谢brolet loginResult=Mapper().map(JSONObject:data)感谢bro