3

在更新到 Swift 4.1 后,我遇到了一个奇怪的问题,从 JSON 到 [[Float]] 的转换失败。让我快速展示代码。

Alamofire.request(url,
            method: .get, parameters: nil, headers: headers()).responseJSON(queue: queue, completionHandler: { response in
                if let floatDoubleArray = response.result.value as? [[Float]] { 
                    // Do stuff
    }
}

以上在 Swift 4.0 中工作得很好,但突然就失败了。我得到的回应如下。

<__NSArrayI 0x7fb9d02fd800>(
0,
0.05,
0.051,
0.052,
0.051,
0.05,
0.05,
0.049,
0.048,
0.048,
0.047,
0.047,
0.047,
0.046,
0.046,
0.047,
0.047,
0.047,
0.048,
0.048,
0.049,
0.049,
0.05,
0.051,
0.051,
0,
0,
0,
0,
0,
0,
0
)
,
<__NSArrayI 0x7fb9d02fde00>(
0,
0.051,
0.051,
0.051,
0.05,
0.05,
0.049,
0.048,
0.048,
0.048,
0.047,
0.047,
0.047,
0,
0,
0,
0,
0,
0,
0
)
)
)

如果我尝试将其硬转换为 [[Float]],我会得到

“无法将 NSNumber 桥接到 Float”

任何想法如何解决这一问题?它使用 Swift 4.0 运行良好。

4

1 回答 1

4

你能试一下吗

if let floatDoubleArray = response.result.value as? [[NSNumber]] { 

   let floatArr = floatDoubleArray.map{$0.map{$0.floatValue}}

}
于 2018-03-31T02:13:02.970 回答