2014-12-02 14 views
21

Gibt es auch eine Möglichkeit, das Schlüsselwort wo an anderer Stelle als einen Schalter zu verwenden? Kann ich es beispielsweise in einer For-In-Schleife verwenden?Kann ich 'where' innerhalb einer for-Schleife in swift verwenden?

Ich habe ein Array mit bools, die alle mit einem Wert, kann ich so etwas tun:

var boolArray: [Bool] = [] 

//(...) set values and do stuff 


for value where value == true in boolArray { 
    doSomething() 
} 

Dieses viel schöner als eine wäre zu verwenden, wenn, so frage ich mich, ob es eine Möglichkeit gibt, in Kombination mit einer For-Schleife zu verwenden. Ty für deine Zeit.

+2

'für Wert in boolArray .filter() {$ 0 == wahr} 'so? –

+0

@BenjaminGruenbaum Wow ja danke, das ist sehr nett und swifty! – Simon

+0

Ich bin froh, dass ich helfen konnte - ich wollte nur klar sein, dass Sie wollen - eine Antwort hinzufügen –

Antwort

52

In Swift 2 neue where Syntax hinzugefügt wurde:

for value in boolArray where value == true { 
    ... 
} 

In Pre 2.0 eine Lösung wäre .filter auf dem Array aufrufen, bevor Sie es wiederholen:

for value in boolArray.filter({ $0 == true }) { 
    doSomething() 
} 
+2

Gute Lösung. Für den Stil würde ich jedoch vorschlagen, * nicht * mit abschließender Closure-Syntax - auf diese Weise ist es klarer, welche Reihe von geschweiften Klammern ist der Körper der 'for' Schleife:' für Wert in boolArray.filter ({$ 0 == wahr}) {doSomething()} ' – rickster

+0

Ben, können Sie mir sagen, warum die for-Schleife unten nicht ausgeführt wird? Auch die Ansicht wird nicht automatisch als UIBarButtonItem erkannt. für Ansicht in self.viewviews, wo view.isKindOfClass (UIBarButtonItem) { view.enabled = false } –

+0

nettes Semikolon;) – mafiOSo

Verwandte Themen