Alamofire.request().responseObject 不返回响应
Posted
技术标签:
【中文标题】Alamofire.request().responseObject 不返回响应【英文标题】:Alamofire.request().responseObject doesn't return response 【发布时间】:2016-12-27 08:12:06 【问题描述】:我使用 AlamofireObjectMapper 扩展。我想得到回应,但它失败了。我的 tableLeague 对象始终为零,因为带有响应闭包的代码不会调用 ( (response: DataResponse) in 如果 response.result.isSuccess tableLeague = response.result.value 不调用)。我使用下一个方法:
let header = ["X-Auth-Token":"1231231"]
static let sharedInstance = ServerAPI()
private func getRequest(uri: String) -> DataRequest
return Alamofire.request(uri, method: .get, headers: header)
public func getTableLeague() -> TableLeague
var tableLeague: TableLeague?
getRequest(uri: URL).responseObject (response: DataResponse<TableLeague>) in
if response.result.isSuccess
tableLeague = response.result.value
return tableLeague!
并在商务舱中使用:
public func readTableLeague() -> TableLeague
let tableLeague = ServerAPI.sharedInstance.getTableLeague()
return tableLeague
我认为这可能是因为尚未响应,但我尝试设置尚未设置的对象
有什么问题吗?我需要使用其他的完成处理程序吗?
【问题讨论】:
请添加更多关于您的问题的描述。 我添加更多描述。 这意味着您的 Mapper 类不会将响应映射到您的 TableLeague 类。请检查响应对象是否包含 JSON 对象。 是json对象 "_links": "self": "href":"api.football-data.org/v1/competitions/426/leagueTable/…" , "competition": "href":"api.football-data.org/v1/competitions/426" , "leagueCaption" :"Premier League 2016/17", "matchday":18, "standing":[ ... 【参考方案1】:请尝试按以下结构映射
class Response: Mappable
var success: Bool?
var data: [Data]?
required init?(_ map: Map)
mapping(map)
func mapping(map: Map)
success <- map["success"]
data <- map["data"]
class Data: Mappable
var uid: Int?
var name: String?
// add other field which you want to map
required init?(_ map: Map)
mapping(map)
func mapping(map: Map)
uid <- map["uid"]
name <- map["name"]
当你通过这种语法得到 JSON 响应的简单映射时
let response = Mapper<Response>().map(responseObject)
if let id = response?.data?[0].uid
println(id)
【讨论】:
以上是关于Alamofire.request().responseObject 不返回响应的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 5 类型 'Request' 没有成员 'authorizationHeader'
更改 Alamofire.SessionManager 的 serverTrustPolicy 以仍然使用***便利方法,如 Alamofire.request
随机获取“网络连接丢失。”迅速使用“Alamofire.request”