AnyObject to Array?

And*_*rew 32 xcode type-conversion ios swift

NSJSONSerialization这样使用:

let twData: AnyObject? = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableLeaves, error: &dataError)
Run Code Online (Sandbox Code Playgroud)

这给了我一个AnyObject?.

从这里,我想将其转换为 Array<Dictionary<String,String>>

我已经尝试了各种各样的,导致这个:

var twDataArray: Array<Dictionary<String,String>>? = twData? as? Array<Dictionary<String,String>>
Run Code Online (Sandbox Code Playgroud)

这只是给出了错误:

类型'Array>'不符合协议'AnyObject'.

并提出更简单的版本:

var twDataArray = twData as Array
Run Code Online (Sandbox Code Playgroud)

给出错误:

无法转换表达式的类型'AnyObject?' 输入'Array'

Vat*_*not 30

要将数据转换为数组:

var twDataArray = (twData as! NSArray) as Array
Run Code Online (Sandbox Code Playgroud)

上面的代码首先转换twData为a NSArray,然后转换为Array通过桥接转换.桥接演员是一种特殊类型的演员,它将Objective-C类型转换为_ObjectiveCBridgeable符合Swift的类型.

(注意我不需要写,Array<AnyObject>因为元素AnyObject是从NSArray→ 桥接演员中推断的Array)

请注意,上面的演员阵容强迫性的.只有在你完全确定它twData是一个实例时才使用它NSArray.否则,使用可选的强制转换.

var twDataArray = (twData as? NSArray) as Array?
Run Code Online (Sandbox Code Playgroud)