2017-02-01 2 views
0

Ich baue eine App und ich kann nicht herausfinden, wie man eine "Übereinstimmung" von JSON Text API mit einem vordefinierten Wort erstellen; Ich denke, das nennt man Interpolation und ich denke, ich müsste enum/switch verwenden, aber für das Leben von mir kann ich nicht herausfinden, wie ich das mit SwiftyJSON umsetzen könnte.Hilfe noch benötigt: SwiftyJSON Parsing Interpolation (?) Swift enum

Grundsätzlich möchte ich, dass ein Benutzer "das Spiel gewinnt", wenn ein vordefiniertes Wort, sagen wir "Apple", mit einer der von der API empfangenen JSON-Antworten übereinstimmt. Wenn das Wort in der JSON-Antwort nicht gefunden wird, muss der Benutzer weiterspielen.

Kann jemand etwas Licht für mich auf, wie man dies tun?

Wenn ich völlig falsch in meiner methodischen Annahme bin, korrigieren Sie mich bitte auf die richtigen Bedingungen.

Ich kann natürlich meinen Code posten, aber es ist ziemlich lang und möchte nicht ziellos posten, was ich nicht brauche.

Danke.

EDIT:

Ich möchte das vorgegebene Wort entsprechen, „Apfel“ zu einem der Wörter von JSON erhalten.

Wenn es eine Übereinstimmung gibt, gewinnt der Benutzer, es wird eine Nachricht angezeigt, der Benutzer entscheidet sich für die nächste Stufe oder der Benutzer kehrt zum Startbildschirm zurück.

Wenn keine Übereinstimmung vorliegt, muss der Benutzer entweder weiterspielen oder die Wiedergabe abbrechen.

Ich möchte dies für mehrere Wörter über verschiedene Ebenen des Spiels tun.

Level 1: "apple" mit einer empfangenen JSON-Antwort abgleichen.

Ebene zwei: "Computer" mit einer empfangenen JSON-Antwort übereinstimmen.

Level drei: "Telefon" oder "Telefon" oder "iPhone" oder "Android" oder eine oder alle der oben genannten auf eine empfangene JSON-Antwort.

ist das expliziter? @ rmaddy

Es gibt mehr zu diesem Code, aber dies scheint der relevanteste Teil zu sein, die Überprüfung auf Fehler weggelassen.

extension ViewController { 

    func analyzeResults(_ dataToParse: Data) { 

     // Update UI on the main thread 
     DispatchQueue.main.async(execute: { 


      // Use SwiftyJSON to parse results 
      let json = JSON(data: dataToParse) 
      let errorObj: JSON = json["error"] 

// Check for errors 
      if (errorObj.dictionaryValue != [:]) { 
       self.labelResults.text = "Error code \(errorObj["code"]): \(errorObj["message"])" 
      } else { 
      // Parse the response 
      print(json) 
      let responses: JSON = json["responses"][0] 




// Get label annotations 
       let labelAnnotations: JSON = responses["labelAnnotations"] 
       let numLabels: Int = labelAnnotations.count 
       var labels: Array<String> = [] 
       if numLabels > 0 { 
        var labelResultsText:String = "Labels found: " 
        for index in 0..<numLabels { 
         let label = labelAnnotations[index]["description"].stringValue 
         labels.append(label) 
        } 
        for label in labels { 
         // if it's not the last item add a comma 
         if labels[labels.count - 1] != label { 
          labelResultsText += "\(label), " 
         } else { 
          labelResultsText += "\(label)" 
         } 
        } 
        self.labelResults.text = labelResultsText 
       } else { 
        self.labelResults.text = "No labels found" 
       } 
+0

Ihre Frage ist überhaupt nicht klar. Aktualisieren Sie Ihre Frage mit einem kurzen, relevanten JSON und einem kurzen, relevanten Code, der nur die Teile zeigt, die sich mit Ihrer Frage befassen. Zeigen Sie klar an, mit welchem ​​Teil Sie Probleme haben. – rmaddy

+0

Entschuldigung, ich dachte, ich wäre klar; aktualisiert für Ihre Anfrage @rmaddy – pythlang

Antwort

0
let json = JSON(data: dataToParse) 

guard json["error"] == nil else { 
    print(json["error"].string) 
    return 
} 

let labelAnnonations = response["labelAnnonations"].array 
var labels: [String] = [] 
var labelResultsText = "Labels found: " 

if labelAnnonations.count > 0 { 

    for labelAnnonation in labelAnnonations { 

     labelResultsText += "\(labelAnnonation["description"].string)," 
     labels.append(labelAnnonation["description"].string) 
    } 

} else { 

    self.labelResults.text = "No labels found" 
} 

labelResultsText.remove(at: labelResultsText.index(before: labelResultsText.endIndex)) 
+0

danke für Ihre Antwort, ich werde es ausprobieren. Ich habe meinen Beitrag bearbeitet, um zu zeigen, wie ich nach Fehlern suche. Welcher Weg ist effizienter/besser? @lucaspalaian – pythlang

+0

Ihr Code sieht richtig aus, aber ich kann nicht herausfinden, wie es in meinem oben implementieren:/@lucaspalaian – pythlang