2017-06-22 91 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