这已在 Swift 4 中修复
let data = ["a": 0, "b": 42]
let filtered = data.filter { $0.value > 10 }
print(filtered) // ["b": 42]
在 Swift 4 中,过滤字典返回字典。
Swift 2 和 3 的原始答案
问题是data
是一本字典,但结果是filter
是一个数组,因此错误消息表明您不能将后者的结果分配给前者。
您可以为结果数组创建一个新变量/常量:
let data: [String: String] = [:]
let filtered = data.filter { $0.1 == "Test" }
Here filtered
是一个元组数组:[(String, String)]
.
过滤后,如果您需要的话,您可以重新创建一个新字典:
var newData = [String:String]()
for result in filtered {
newData[result.0] = result.1
}
如果您决定不使用filter
你可以改变你的原始字典或其副本:
var data = ["a":"Test", "b":"nope"]
for (key, value) in data {
if value != "Test" {
data.removeValueForKey(key)
}
}
print(data) // ["a": "Test"]
注意:在 Swift 3 中,removeValueForKey
已更名removeValue(forKey:)
,所以在这个例子中它变成了data.removeValue(forKey: key)
.