2016-07-01 3 views
0

첫 번째 게시물을 여기에!SWIFT : JSON 객체 구문 분석

나는 내 자신의 날씨 응용 프로그램에서 일해 왔습니다. (저는 Swift를 자기 배움하고 있지만 이미 Java로 경험이 많은 고등학생입니다.)

나는 내 응용 프로그램에서 사용하는 정보를 수집하기 위해 API의 사용 방법을 배우고 난이 비디오를 사용하고 다음 11시 38분 마크 주위에, JSON 개체가 생성에서 https://www.youtube.com/watch?v=r-LZs0De7_U

을 :

var jsonError: NSError 
    let json = NSJSONSerialization.JSONObjectWithData(weatherData, options: nil, error: &jsonError) as NSDictionary 

    if let name = json["name"] as? String { 
     cityNameLabel.text = name 
    } 

    if let main = json["main"] as? NSDictionary { 
     if let temp = main["temp"] as? Double { 
      cityTemperatureLabel.text = String(format: "%.1f", arguments: temp) 
     } 

기본적으로 JSON 개체에서 String을 구문 분석하고 내 UILabel에 String을 저장하려고합니다.

그러나 두 번째 코드 줄에서는 'NSError는 NSError와 동일하지 않습니다.'라는 오류 메시지가 나타납니다. 그리고이 오류에 대한 해결책을 찾을 수 없습니다, 그래서 처음 두 행을 제거하고 대체했습니다 : 오류를 제거있어

var jsonError : NSError? 

    let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(weatherData, options: nil, error: &jsonError) 


    if let error = jsonError{ 
     println("error occurred: \(error.localizedDescription)") 
    } 
    else if let jsonDict = json as? NSDictionary{ 
     println("json is dictionary \(jsonDict)") 
    } 
    else if let jsonArray = json as? NSArray{ 
     println("json is an array: \(jsonArray)") 
    } 

이 있지만 나머지 코드가 더 이상 작동하지 않았다 . 가능한 모든 솔루션 + 설명? 나는 API/JSON에 대해 아직 익숙하지 않아서 문제를 잘 설명하지 않는다면 사과드립니다. 동영상이 도움을 줄 수 있어야합니다.

편집 : 분명히 스위프트 버전 1.2를 사용하고 있습니다.

+0

var jsonError : NSError? = nil – Dershowitz123

+0

@ Dershowitz123 당신은 정교 할 수 있습니까? –

+0

첫 번째 줄을 내가 보여준 방법으로 변경하십시오. 그게 작동하는지 말해줘! – Dershowitz123

답변

0

환영합니다. 더 이상 유효하지 않은 오래된 Swift 코드가있는 것 같습니다. 이것은 잘하면 작동합니다.

var json: AnyObject? 

    do { 
     try json = NSJSONSerialization.JSONObjectWithData(weatherData, options: []) 
    } catch { 
     print("Error") 
    } 

    if let name = json["name"] as? String { 
     cityNameLabel.text = name 
    } 

    if let main = json["main"] as? NSDictionary { 
     if let temp = main["temp"] as? Double { 
      cityTemperatureLabel.text = String(format: "%.1f", arguments: temp) 
     } 
    } 
+0

응답을 보내 주셔서 감사합니다. 코드를 복사했지만 여전히 오류가 발생합니다. 즉, '연속적인 문은'; '(try 문)으로 분리해야합니다. ... catch가 나에게 '계산 된 속성에 명시적인 형식이 있어야 함'이라는 오류를 표시합니다. if 문도 제공된 인수를 받아들이는 'subscript'에 대한 과부하를 찾을 수 없습니다. –

+0

@JustinHu' 여전히 오류가 발생합니다.이 코드는 Swift 2 용이며 Swift 1을 사용하고 있습니다. – Moritz

+0

안녕하세요. 귀하의 코드가 작동한다고 말할 수 있습니다! 고마워요 남자 –