2016-07-13 11 views
1

Ich habe eine Reihe von Dictionary-Objekten aus einer JSON-Datei gefüllt wie folgt definiert:Array von Dictionary-Objekten in Swift Suche 2

var peopleArray = [Person]() 

Person wie folgt definiert ist:

class Person { 

    var name: String? 
    var gender: String? 
    var html_url: String? 

    init(json: NSDictionary) { // Dictionary object 
     self.name = json["name"] as? String 
     self.gender = json["gender"] as? String 
     self.html_url = json["html_url"] as? String // Location of the JSON file 
    } 
} 

Sobald das Array wurde bevölkert, ich kämpfe, um die contains Funktion zu verwenden, um festzustellen, ob es jemanden mit einer spezifischen name gibt.

ich die folgende Fehlermeldung ausgegeben: Cannot convert value of type 'String!' to expected argument type '@noescape (Person) throws -> Bool' für die folgende Zeile ich versucht habe:

peopleArray.contains { person -> Bool in 
    person.name == "Bob" 
} 

oder mit dem:

if (peopleArray.contains("Bob")) 
+1

Werfen Sie einen Blick auf diese: http://stackoverflow.com/a/32953118/2227743 (Ihre Objekte gleichzusetzen entsprechen sollte) – Moritz

+2

Etwas außerhalb des Themas, aber Sie könnten SwiftyJSON einfacher finden. https://github.com/SwiftyJSON/SwiftyJSON – Asdrubal

+0

Ihr Prädikat kann einfach $ 0 sein. Name == "Bob" – Feldur

Antwort

4

Sie einen Verschluss als Eingangsparameter von contains Anruf verwendet werden soll kurze Stilsyntax:

peopleArray.contains { $0.name == "Bob" } 

Alternativ, wenn wha t Sie wollen, ist für eine bestimmte Person zu suchen, könnten Sie machen Person entsprechen Equatable: https://stackoverflow.com/a/32953118/2227743