用于 keyPath 的 Alamofire responseArray 字符串数组
Posted
技术标签:
【中文标题】用于 keyPath 的 Alamofire responseArray 字符串数组【英文标题】:Alamofire responseArray String array for keyPath 【发布时间】:2017-08-31 18:55:20 【问题描述】:我有一个 rest 调用,它返回 keyPath "data" 的字符串 [String] 数组,例如...
"data": [
"1",
"3",
"5",
"2",
"4",
"9"
]
我正在尝试通过responseArray(keyPath: "data")
获取它,但在*.responseArray(keyPath: "data") (response: DataResponse<[String]>) in*
行出现编译错误
无法将类型 '(DataResponse) -> ()' 的值转换为预期的参数类型 '(DataResponse) -> Void'
部分请求示例
alamofireManager.request(url)
.responseArray(keyPath: "data") (response: DataResponse<[String]>) in
if response.result.isSuccess
if let data = response.result.value
//process success
else
// handle error
...
你们中有人知道怎么做吗?
【问题讨论】:
【参考方案1】:问题在于 String 不可映射。根据https://github.com/Hearst-DD/ObjectMapper/issues/487,这些是建议的解决方案:
在这种情况下,我建议直接从 Alamofire 响应中访问数据。您应该能够简单地将其转换为 [String]。
或者,您可以将 String 子类化并使子类 Mappable,但是我认为这对于您的情况来说是不必要的工作
使用 Swift 的 4 Codable(无外部依赖):
struct APIResponse: Decodable
let data: [String]
let url = "https://api.myjson.com/bins/1cm14l"
Alamofire.request(url).responseData (response) in
if response.result.isSuccess
if let jsonData = response.result.value,
let values = try? JSONDecoder().decode(APIResponse.self, from: jsonData).data
//process success
print(values)
else
// handle error
【讨论】:
以上是关于用于 keyPath 的 Alamofire responseArray 字符串数组的主要内容,如果未能解决你的问题,请参考以下文章