从Swift 4更新到4.1之后的转换问题

时间:2018-03-31 02:07:37

标签: alamofire swift4.1

我遇到了一个奇怪的问题,在更新到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]],我会

  

&#34;无法将NSNumber桥接到Float&#34;

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

1 个答案:

答案 0 :(得分:4)

你能试试吗

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

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

}