如何使用序列化为数据的响应数据处理程序(通过AlamoFire的Swift 3)
有什么建议吗?我想使用func通过Alamofire调用API,但遇到了一个错误 无法将类型为“(DataResponse)->()”的值转换为预期的参数类型“(DataResponse)->Void” 代码如下:如何使用序列化为数据的响应数据处理程序(通过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 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