2017-06-22 8 views
0

Ich versuche, einen Closure-Filter zu verwenden, um Leute in meinem Wörterbuch zu filtern, die unter 18 sind. Ich weiß, wie man mit einem Array filtert, aber ich bin mir nicht sicher, wie man ein Wörterbuch filtert.Swift Filter und Wörterbücher

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

das gibt mir den Fehler "Contextual Typ für die Liste Schließung Argument erwartet 2 Argumente, die implizit nicht ignoriert werden kann"

Antwort

0

Just do it wie folgt aus:

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

Was Sie tun, ist dass Sie $0.value in Ihrem filter verwenden.

+0

Ich versuchte dies, aber ich bekomme den gleichen Fehler – Tom

+0

@Tom, wenn Sie den obigen Code in meiner Antwort verwenden, wird es funktionieren. Verwenden Sie in Ihrem Code ein anderes Wörterbuch eines anderen Typs? Versuchen Sie, meine Antwort in ein Playground-Projekt einzufügen und "UnderAge" auszudrucken und Sie erhalten '[(Taste:" Fabien ", Wert: 16)]' –

+0

Ich habe es funktioniert, danke! – Tom

Verwandte Themen