Swift Filter Array von Strings

8

Ich hatte Probleme, das Array von Schlüsselwörtern (Strings) in swift, Mein Code:

zu filtern %Vor%

As AnyObject kann kein Subtyp von NSString sein, ich bleibe dabei!

    
Meseery 04.04.2015, 15:29
quelle

3 Antworten

16

[Aktualisiert für Swift 2.0]

Da NSString gebührenfrei zu Swift String überbrückt wird, vermeide die Nötigungen einfach mit:

%Vor%

Aber, wenn Sie denken, dass allValues keine Zeichenketten sind:

%Vor%

gibt ein optionales Array zurück.

    
GoZoner 04.04.2015 16:06
quelle
4

Ihr filter ist über [AnyObject] , aber Ihre Schließung dauert NSString . Diese müssen übereinstimmen. Außerdem muss Ihr Ergebnis ein Bool , nicht ein Bool? sein. Sie können diese einfach so ansprechen:

%Vor%

Dies akzeptiert AnyObject und versucht dann, es nach NSString herunterzuzwingen. Es dann nil-coalleces ( ?? ) das Ergebnis, um sicherzustellen, dass es immer ein Bool ist.

Ich würde jedoch empfehlen, keywords als [String:String] und nicht als NSDictionary zu behandeln. Das würde alle Komplikationen von AnyObject beseitigen. Dann kannst du das einfach machen:

%Vor%

Wenn möglich, sollten Sie Foundation-Sammlungen so bald wie möglich in Swift-Sammlungen konvertieren und diese speichern. Wenn Sie über eingehende Foundation-Objekte verfügen, können Sie diese in der Regel leicht mit folgenden Methoden konvertieren:

%Vor%

Oder Sie können Folgendes tun, um sie so zu konvertieren, dass sie beim Debugging abstürzen (aber im Release "still" arbeiten):

%Vor%     
Rob Napier 04.04.2015 16:18
quelle
0

Es gibt sowohl ein Problem mit GoZoners Antwort für bestimmte Datentypen als auch einen etwas besseren Weg, dies zu tun. Die folgenden Beispiele können dies zeigen:

%Vor%

Wahrscheinlich nicht die Menge, die Sie erwartet haben!

Dies funktioniert jedoch auf diese Weise, wenn wir animalArray nicht als NSMutableArray eingeben:

%Vor%

Ich würde jedoch empfehlen, $ 0. contains () anstelle von $ 0.rangeOfString ()! = nil zu verwenden, da es unter beiden Umständen funktioniert und die Lesbarkeit des Codes geringfügig verbessert:

%Vor%     
Ryan Davis 30.06.2016 19:58
quelle

Tags und Links