2016-09-04 5 views
0

json 데이터를 가져와 반환해야하는 함수가 있습니다. 이것은 아래의 기능입니다 :함수가 void 함수에서 예기치 않은 무효 반환 값을 반환합니다.

func httpjson(){ 
    let requestURL: NSURL = NSURL(string: "http://www.learnswiftonline.com/Samples/subway.json")! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithRequest(urlRequest) { (data, response, error) -> Void in 
     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 
     if (statusCode == 200) { 
      print("All OK!") 
      do{ 
       let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 
       return json 
      }catch { 
       print("Error with Json: \(error)") 
      } 
     } 
    } 
    task.resume() 
} 

이 코드는이 문제에 대해 조금 읽은 후 오류 Unexpected non-void return value in void function

를 반환, 나는 이것이 func httpjson()-> String{-func httpjson(){을 변경하여 고정 될 수 있음을 읽을 수 있지만 여전히 같은 오류를 반환 .

+1

[this] (http://stackoverflow.com/q/32121108/6541007)과 매우 유사합니다. – OOPer

답변

0

httpjson 메서드가 아닌 (data, response, error) -> Void으로 정의 된 클로저에 문제가있는 것 같습니다.

데이터 작업이 비동기 적이므로 httpjson은 JSON 구문 분석이 완료 될 때까지 이미 반환되었습니다. ~이 아직 없기 때문에 아무 것도 반환하지 않는 것으로 정의 할 필요는 없습니다.

json (알림, 콜백, 완료 블록 등)으로 무엇인가를해야 앱의 나머지 부분을 사용할 준비가되었음을 알 수 있습니다.

관련 문제