2017-01-19 2 views
0

이는 JSON입니다 :weather API에서 json을 가져올 수 없습니다. 아이폰 OS

{ 
"main":{ 
    "temp":-11.67, 
    "pressure":1040.21, 
    "humidity":73, 
    "temp_min":-11.67, 
    "temp_max":-11.67, 
    "sea_level":1055.37, 
    "grnd_level":1040.21 
}, 
"id":3099213, 
"name":"London", 
"cod":200 
} 

내가 JSON 파일을 가지고 내가 "name": "London" (London)의 값을 가지고 변수 CityName이에 저장하기를 원하지만 그것이 작동하지 않는 오류가 라인 self.cityName = city에있다 . [String : AnyObject] 유형의 값을 String!

에 할당 할 수 없습니다. 예를 들어 JSON에서 다양한 온도로 저장해야하는 다음 올바른 온도와 온도가 표시됩니다.

"name":"London" 값을 선택하여 변수에 저장하는 방법을 모르겠다. 내가 수정 넣어이 : 나는 관련이없는 유형 'String''[String : AnyObject]'에서 캐스트를 경고있어 한 self.cityName = city as! String

항상 실패

var cityName: String! 

let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject] 


       if let main = json["main"] as? [String : AnyObject] { 
        if let temp = main["temp"] as? Int { 
         self.degree = temp 
        } 
       } 
       if let city = json["name"] as? [String : AnyObject] { 
        self.cityName = city 
       } 
} 
+0

'{ "날씨"[ { "ID"701 "메인" "미스트" "설명" "미스트" "아이콘": "50N" } } ///////////////////////////////////////////// 0125 날씨 : json [ "날씨"]를? [String : AnyObject] { someWeather = weather [ "main"]로하면? 문자열 { self.weatherDescription = someWeather } 변수 weatherDescription에 json의 "main"또는 "description"값을 저장하는 방법은 무엇입니까? 이 코드처럼하려고하지만 – Ciechan

답변

0
if let city = json["name"] as? [String : AnyObject] { 
     self.cityName = city 
    } 

현재 당신 '

if let city = json["name"] as? String { 
     self.cityName = city 
    } 
+0

'{ "날씨"나에게 아무것도 표시되지 않습니다 : [ { "ID": 701, "주": "미스트" "설명": "안개 ", "아이콘 ":"50n " } } //////////////////////////////////////////////////////// 날씨가 json [ "weather"] 인 경우? [String : AnyObject] { someWeather = weather [ "main"]로하면? 문자열 { self.weatherDescription = someWeather } 변수 weatherDescription에 json의 "main"또는 "description"값을 저장하는 방법은 무엇입니까? 이 코드에서와 같이 시도했지만 아무 것도 표시하지 않습니다 – Ciechan

+0

다른 질문을 게시하십시오. 형식이없는 주석의 Json 형식을 이해하는 것은 매우 어렵습니다. – Sander

0

로 교체 String 유형 인 cityName을 (유형 임)으로 다시 지정하려고합니다.. 대신 다음과 같이 cityName에 할당하기 전에 String에 캐스트 : "어떤"값 유형의 문자열 basd 키 - 값 사전 개체에 대한 스위프트 표준 I 추가로 [String : Any][String : AnyObject]를 교체 한

var cityName: String! 

let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : Any] 

if let main = json["main"] as? [String : Any], 
    let temp = main["temp"] as? Int { 
    self.degree = temp 
} 

if let city = json["name"] as? String { 
    self.cityName = city 
} 

참고. 문 사이에 ,을 사용하여 하나의 조건부에서 여러 값의 래핑을 중첩하여 중복 if let을 제거했습니다.

관련 문제