서버를 호출하고 JSON 정보를 가져 오는 작은 응용 프로그램을 만들고 싶습니다.웹 요청이 작동하지 않는 경우
{"temperature":23.60,"humidity":18.40}
내 코드는 다음과 같다 :
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()
그리고 내 MainViewController의 viewDidLoad에 함수를 실행하고 서버가 반환하는 것은 이것이다. 출력이 "모두 정상이지만, 파일 dl 성공적으로"출력되지만 더 이상 출력되지 않습니다. do 블록이나 캐치에서의 출력은 UILabels를 변경하지 않습니다. 하지만 웹 서버에서 요청이 있다는 것을 알 수 있습니다!
왜 그런가? 나는 부동 당신이 가야한다로 주조
dunklesToast
메인 큐에 ui 업데이트를 디스패치해야하지만 클로저에 중단 점을 설정하고 단계별로 진행되는 것을 확인하십시오. 귀하의 값은 문자열이 아닌 부동으로 표시되므로 내 추측은 조건부 다운 캐스트가 실패한 것입니다 – Paulw11