我有一个字典数组:
var dicts = [["key1": "value1", "key2": "value2"], ["key1": "value3", "key2": "value4"]]
我该如何扩展
Array
,以便拥有以下函数:dicts.values(of: "key1") // result: ["value1", "value3"]
我尝试了这个:
extension Array where Iterator.Element == [String: Any] { // ERROR!
func values(of key: String) -> [Any]? {
var result: [Any]?
for value in self {
let val = value as! Dictionary<String, Any>
for k in val.keys {
if k == key {
if result == nil {
result = [Any]()
}
result?.append(val[k])
break
}
}
}
return result
}
}
但是我在声明extension Array
时总是会出现错误:
错误:同类型要求使泛型参数'Element'非泛型
我该怎么做才能修复这个错误呢?
使用for value in self
来迭代Array
是正确的吗?
谢谢