Swift:筛选器字典

我试图迅速过滤字典:

var data: [String: String] = [:]

data = data.filter { $0.1 == "Test" }

上面的过滤器代码在swift 2下编译,但产生以下错误:

无法将类型[[(String,String)]’的值分配给类型’[String:String]’的值

这是swift编译器中的错误,还是不是快速过滤字典的正确方法?

提前非常感谢您!

回答:

let data = ["a": 0, "b": 42]

let filtered = data.filter { $0.value > 10 }

print(filtered) // ["b": 42]

在Swift 4中,过滤后的字典返回字典。


问题是那data是一个字典,但结果filter是一个数组,因此错误消息说您不能将后者的结果分配给前者。

您可以为结果数组创建一个新的变量/常量:

let data: [String: String] = [:]

let filtered = data.filter { $0.1 == "Test" }

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)

以上是 Swift:筛选器字典 的全部内容, 来源链接: utcz.com/qa/405677.html

回到顶部