我正在推动一个项目而无法进行研究以找到答案。我希望我能得到一些帮助。
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]]
答案 0 :(得分:2)
哦,刚看到你的编辑。帮助很大。
要从每个字典中获取listName
的值,您可以这样做......
forPickArray = tt.flatMap { $0["listName"] }
将变量重命名为具有合理的名称。 tt
不是一个明智的名字。我不知道它是什么:D
答案 1 :(得分:1)
,你是否试图从字典中提取密钥并将其转换为数组?那么你需要做以下事情:
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)
}