iOS无法将[String:Any?]转换为[String]如何转换?

时间:2017-08-03 13:21:38

标签: ios arrays xcode

我正在推动一个项目而无法进行研究以找到答案。我希望我能得到一些帮助。

var tt: Array<[String:Any]> = []
var forpickarray: [String] = []

错误:无法将[String:Any?]转换为[String]

for index in 1...self.tt.count {
     var arr: [String] = self.tt[index-1]
     forpickarray.append(self.tt[index-1])                    
}

我正在尝试获取价值 - 只是列表名称

[["total": 2, "listName": Testing, "listid": 1], ["total": 1, "listName": Yeeea, "listid": 2]]

3 个答案:

答案 0 :(得分:2)

哦,刚看到你的编辑。帮助很大。

要从每个字典中获取listName的值,您可以这样做......

forPickArray = tt.flatMap { $0["listName"] }

将变量重命名为具有合理的名称。 tt不是一个明智的名字。我不知道它是什么:D

答案 1 :(得分:1)

你的for循环中的

,你是否试图从字典中提取密钥并将其转换为数组?那么你需要做以下事情:

var arr: [String] = Array(tt[index-1].keys)
forpickarray.append(contentsOf: arr)

因为tt是一个字典数组,tt中的每个元素都可能有很多键

答案 2 :(得分:1)

请使用原生的Swift语法而不是丑陋的 Objective-cish 代码。

根本不需要循环:

forpickarray = tt.flatMap{ $0["listName"] as? String }

即使需要循环,也有一种比基于索引的for循环更有效的方法:

for item in tt {
    forpickarray.append(item)
}