【发布时间】:2016-11-16 05:19:37
【问题描述】:
在 Swift 2.3 中,我可以使用 [String:AnyObject] 并将其转换为! [[Double]]。但是,在 Swift 3.0 中使用相同的对象,我无法将其转换为 [[Double]]。当我将其转换为 [[AnyObject]] 或 [[Any]] 时,循环并尝试转换,我收到以下错误:
无法将“__NSArrayI”(0x10783ec08)类型的值转换为“NSNumber”(0x106e47320)。
以下代码适用于我的 Swift 2.3 实现,但不适用于 Swift 3.0
func extractCoordinatesForArea() {
// This first line is where it crashes
let theArraysOfCoordinates = myObject.geoArea!["geometry"]!["coordinates"] as! [[Double]]
var newArea:[CLLocationCoordinate2D] = []
for coordArray in theArraysOfCoordinates {
// x is LONG, LAT
let x = [coordArray[0], coordArray[1]]
// Reverse the coordinates because they are stored as LONG, LAT on the server
let y = CLLocationCoordinate2DMake(x[1],x[0])
print(y)
newArea.append(y)
}
}
虽然错误是有道理的,但在明确声明类型或在 for 循环中进行转换后,我似乎无法让它工作。非常感谢任何帮助。
【问题讨论】: