2017-12-09 17 views
0

JSON 데이터를 검색하여 완성 블록에 표시하는이 함수는 왜 (Data) 대신 ((Data) -> Void) 대신에 void이 꼭 필요한지 이해하기 위해 노력하고 있습니다. 여기에 기능은 다음과 같습니다JSON 데이터를 검색 할 때 완성 블록을 가져 오는 시점이 Void를 반환합니까?

typealias JSONData = ((Data) -> Void) 


    func getJSONData(type: String, urlExtension: String, completion: @escaping JSONData) { 

    let request = URLRequest(url: URL(string:"\(baseURL)\(type)/\(urlExtension)?api_key=\(apiKey)&region=US&append_to_response=videos,images,releases")!) 


    let dataTask = session.dataTask(with: request, completionHandler: { (data, response, error) in 

     if error == nil { 
     if let httpResponse = response as? HTTPURLResponse { 
      switch (httpResponse.statusCode) { 
      case 200: 
      if let data = data { 
       completion(data) 
      } 
      default: 
      print(httpResponse.statusCode) 
      } 
     } 
     } else { 

     DispatchQueue.main.async { 

      if let error = error { 
      print("Error: \(error.localizedDescription)") } 
      return 
     } 
     } 
    }) 
    dataTask.resume() 
    } 

답변

1

스위프트 구문을 사용하면 -> 후 반환 유형과 폐쇄를 선언해야한다는 것을 지시한다.

  1. typealias JSONData = (Data) -> Void
  2. typealias JSONData = (Data) ->()

내가 가장 자주 # 1을 사용하여 애플을 참조하십시오

당신은 두 가지 옵션이 있습니다.

+0

-> 모두 함께 생략 할 수 있습니까, 아니면 필수입니까? – SwiftyJD

+0

필수 항목입니다. 자세한 내용은 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html을 참조하십시오. – hhanesand

+0

아, 고마워! – SwiftyJD