2017-03-27 2 views
1

webservice를 호출하는 메소드를 만들 때 responseHandler를 전달합니다. 그런 다음이 메서드의 끝에서 : responseHandler (false, nil, error, nil)완료 핸들러

어떤 의미입니까? 나는 다른 메소드 (false, nil, error, nil)를 넘겨 줘야하나요? 아니면 같은 방법으로 돌려 주겠습니까? "responseHandler (false, nil, error, nil)"가 실행될 때 수행되는 작업은 무엇입니까?

방법 =====================================

func sessionTaskPostRequest (_ urlRequest : URLRequest , responseHandler: @escaping ResponseHandler) -> URLSessionTask { 
let sesstionTask : URLSessionTask = networkSession.dataTask(with: urlRequest, completionHandler: { (data : Data? , urlResponse : URLResponse? , error : NSError?) in 

    var json: NSDictionary! 
    do { 
     json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as? NSDictionary 
    } catch { 
     print(error) 
    } 

    if(error != nil) { 
     responseHandler (false , nil , error , nil) 
    } 

THX

+0

'sessionTaskPostRequest'매개 변수 (처리기)로 함수를 전달하고 있습니다. 코드가 실행되면 응답 핸들러가 실행됩니다. –

답변

0

responseHandler 여기 코드 블록이 있습니다.

이것은 무엇을 의미합니까?

대부분의 경우 코드 블록을 사용하여 비동기 이벤트의 응답을 처리합니다. 따라서 귀하의 경우 서버에 대한 귀하의 요청이 성공했는지 여부를 알기 위해 노력하고 있습니다.

제안

나는 당신이 형 ResponseHandler에 선언 코드에서 검색하는 것이 좋습니다. 나는 그것이 다음과 같을 것이라고 생각합니다 :

typealias ResponseHandler = (p1: Type, p2: Type, p3: Type, p4: Type) -> Void 

그래서 params 실제 이름을 보면 당신은이 블록에 무엇을 전달했는지 알 수 있습니다.

또 다른 것은 성공할 때이 블록을 호출해야한다고 생각합니다. 그렇지 않으면 비동기 함수가 실패 할 때만보고합니다.

관련 문제