2016-10-19 4 views
0

나는 기상 조건을 얻기 위해 API를 사용하고 있는데 내가 습도의 값이, 난 그냥스위프트, 사전 구문 분석 오류

let humidityValue = dict["main"]["humidity"] 그것을 사용하려는 경우 검색 DICT는

dict = { 
    base = stations; 
    clouds =  { 
     all = 92; 
    }; 
    cod = 200; 
    coord =  { 
     lat = "31.23"; 
     lon = "121.47"; 
    }; 
    dt = 1476853699; 
    id = 1796231; 
    main =  { 
     "grnd_level" = "1028.63"; 
     humidity = 93; 
     pressure = "1028.63"; 
     "sea_level" = "1029.5"; 
     temp = "73.38"; 
     "temp_max" = "73.38"; 
     "temp_min" = "73.38"; 
    }; 
    name = "Shanghai Shi"; 
    rain =  { 
     3h = "0.665"; 
    }; 
    sys =  { 
     country = CN; 
     message = "0.0125"; 
     sunrise = 1476827992; 
     sunset = 1476868662; 
    }; 
    weather =  (
     { 
      description = "light rain"; 
      icon = 10d; 
      id = 500; 
      main = Rain; 
     } 
    ); 
    wind =  { 
     deg = "84.50239999999999"; 
     speed = "5.97"; 
    }; 
} 

입니다 공장.

그러나 문제는 I가도 나는 그것이 전무를 검색

let dscptValue = dict["weather"]["description"]을 사용하는 경우 날씨

설명의 가치를 얻을 싶어요.

어때? 날씨가 일 때 두 개의 대괄호가 있음을 알 수 있습니다. 대괄호가없는 명령문과 같은지 확실하지 않습니다.

weather =  (
      { 
     description = "light rain"; 
     icon = 10d; 
     id = 500; 
     main = Rain; 
    } 
); 

어떻게 설명의 값을 얻으려면?

답변

2

weather 키는 Dictionary이 아니기 때문에 ArrayDictionary입니다. 따라서 첫 번째 객체에 액세스해야합니다.

if let weather = dict["weather"] as? [[String: AnyObject]], let weatherDict = weather.first { 
    let dscptValue = weatherDict["description"] 
} 

참고 : 나는 강제로 포장하여 충돌을 방지하기위한 if let로 선택 포장을 사용했다.

2

날씨는 사전의 배열입니다.

dict["weather"][0]["description"] 

당신에게 예상되는 결과가 나타날 수 있습니다.

관련 문제