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)