2017-06-22 93 views
0

我想用闭包过滤器来过滤我的字典中18岁以下的人。我知道如何过滤一个数组,但我不知道如何过滤字典。斯威夫特过滤器和字典

var namesAndAges = ["Tom": 25, "Michael": 35, "Harry": 28, "Fabien": 16] 
var underAge = namesAndAges.filter { &0.namesAndAges.value < 18 } 

这给我的错误“语境类型关闭参数列表预计2个参数,这是不能被默认忽略”

回答

0

只要做到这一点是这样的:

var namesAndAges = ["Tom": 25, "Michael": 35, "Harry": 28, "Fabien": 16] 
var underAge = namesAndAges.filter({ $0.value < 18 }) // [(key: "Fabien", value: 16)] 

你做的是您在filter中使用$0.value

+0

我试过这个,但我得到了同样的错误 – Tom

+0

@Tom如果你在我的答案中使用上面的代码,它将工作。你的代码中是否使用另一种类型的字典?尝试将我的答案粘贴到Playground项目中,并打印出'underAge',您将得到'[(key:“Fabien”,value:16)]' –

+0

我得到它的工作,谢谢! – Tom