将AnyObject转换为嵌套在数组

时间:2016-10-08 06:03:02

标签: ios swift dictionary casting

我希望将AnyObject变量转换为嵌套在Array中的Dictionary。例如,我在我的函数中声明了变量:

var items: [[String:String]] = [
     [
         "pid": "1",
         "content": "123",
         "vote": "1",
         "city": "New York",
         "country": "United States"
     ]
 ]

然后我从HTTP请求中获取JSON对象并将其转换为AnyObject。然后我试图将HTTP请求提取的数据作为AnyObject附加到原始变量上。

将AnyObject转换为所需的[[String:String]]形式时,此过程失败。

func updateTable(data: AnyObject?) {
    let data_array = (data as! NSArray) as! Array<Dictionary<String, String>>

    self.items += data_array
}

此函数包括变量的转换和数组的添加。

如何正确转换此变量?

修改 我忘了提到我将序列化JSON输出转换为[AnyObject],然后再将其传递给函数

1 个答案:

答案 0 :(得分:3)

我认为你需要转换数组的各个元素。

func updateTable(data: [AnyObject]) {
for item in data {
    if let item = item as? [String: String] {
        items.append(item)
    }
}

或者如果你想更简洁......

func updateTable(data: [AnyObject]) {
    items += data.flatMap({$0 as? [String: String]})
}