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:
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:
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%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%