2016-05-11 6 views
8

Ich weiß über SwiftyJSON Methode existiert(), aber es scheint nicht immer zu funktionieren, wie sie sagen. Wie kann ich in diesem Fall das richtige Ergebnis erhalten? Ich kann die JSON-Struktur nicht ändern, weil ich dies über die API des Clients erhalte.Wie überprüft man, ob Schlüssel in SwiftyJSON vorhanden ist, wenn JSON Array ohne Schlüssel enthält

var json: JSON = ["response": ["value1","value2"]] 
if json["response"]["someKey"].exists(){ 
    print("response someKey exists") 
} 

Ausgang:

 
response someKey exists 

die nicht gedruckt werden sollte, weil somekey existiert nicht. Aber manchmal kommt dieser Schlüssel von der Client-API und ich muss herausfinden, ob sie existiert oder nicht.

Antwort

13

Es funktioniert nicht in Ihrem Fall, weil der Inhalt von json["response"] kein Wörterbuch ist, es ist ein Array. SwiftyJSON kann nicht nach einem gültigen Wörterbuchschlüssel in einem Array suchen.

Mit einem Wörterbuch, es funktioniert, ist die Bedingung nicht ausgeführt, wie erwartet:

var json: JSON = ["response": ["key1":"value1", "key2":"value2"]] 
if json["response"]["someKey"].exists() { 
    print("response someKey exists") 
} 

Die Lösung für Ihr Problem ist zu prüfen, ob der Inhalt in der Tat ein Wörterbuch ist .exists() vor der Verwendung:

if let _ = json["response"].dictionary { 
    if json["response"]["someKey"].exists() { 
     print("response someKey exists") 
    } 
} 
+0

Ihre Lösung funktioniert gut. Vielen Dank – Kocio

Verwandte Themen