2016-11-14 2 views
0

Ich möchte eine kleine App erstellen, die einen Server ruft und JSON-Informationen erhält. Die Sache der Server gibt, ist dies:Web-Anfrage nicht fangen funktioniert

{"temperature":23.60,"humidity":18.40} 

Mein Code ist wie folgt:

let requestURL: NSURL = NSURL(string: "http://esp_0b48a1:1337/")! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(url: requestURL as URL) 
    let session = URLSession.shared 
    let task = session.dataTask(with: urlRequest as URLRequest) { 
     (data, response, error) -> Void in 

     let httpResponse = response as! HTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     if (statusCode == 200) { 
      print("Everyone is fine, file downloaded successfully.") 
      do{ 
       let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:AnyObject] 

       if let temp = json["temperature"] as? String { 
        self.degrees.text = temp + "°C"; 
        print(temp); 
       } 
       if let hum = json["humidity"] as? String { 
        self.hum.text = hum + "%"; 
        print(hum); 
       } 
      }catch{ 
       print("error"); 
       self.degrees.text = "no Temperature"; 
       self.fill.text = "with"; 
       self.degrees.text = "some errors like " + String(statusCode); 
      } 
     } 
    } 

    task.resume() 

Und ich es in der viewDidLoad Funktion meines Mainviewcontroller bin Ausführung. Ich bekomme die Ausgabe "Jeder ist in Ordnung, Datei dl erfolgreich" aber keine Ausgabe mehr. Nicht das man im Do Block noch den Output im Catch und das UILabels nicht ändert. Aber auf meinem WebServer kann ich sehen, dass es eine Anfrage got!

Irgendwelche Ideen warum? ich über http anschließe und die Allow Arbitrary Lasten in App-Transport-Sicherheitseinstellungen auf yes gesetzt (info.plist)

dunklesToast

+1

Sie müssen die UI-Updates in der Hauptwarteschlange versenden, aber ich schlage vor, Sie setzen einen Haltepunkt in der Schließung und durchlaufen, um zu sehen, was passiert. Deine Werte scheinen keine Zeichenketten zu sein, also denke ich, dass deine bedingten Downcasts fehlschlagen – Paulw11

Antwort

1

Casting als ein Schwimmer sollten Sie gehen zu bekommen. Ich würde vorschlagen, ein anderes hinzuzufügen, um einen Casting-Fehler zu behandeln.

+1

Gearbeitet! Aber ich musste 'temp +" ° C "' in '" \ (temp) ° C "' ändern, weil Sie kein '+' verwenden können, um einen Float und einen String zusammen zu setzen. Vielen Dank! – dunklesToast

+0

Ja! das stimmt. –

Verwandte Themen