2017-11-06 6 views
0

JSON을 구문 분석하고 디코딩 할 때 고유 솔루션을 사용하는 작은 함수가 있습니다. 처리 오류를 제외한 모든 것이 잘 작동합니다. 보류 약속이 해제 아무것도 충돌하지만 오류 을 얻고있다 - 나는 오류가 발생하면 오류가 발생하는 경우, 내가 오류메시지신속한 표준 네트워킹으로 PromiseKit으로 거부 처리?

func fetchCardDetails(withNumber number: Int) -> Promise<CardDetails> { 
    guard let URL = URL(string: "\(URLProvider.url)/\(APIKeyProvider.apiKey)/\(number)/") else { 
     fatalError("Could not reformat string to URL!") 
    } 
    var request = URLRequest(url: URL) 
    request.httpMethod = "GET" 

    let decoder = JSONDecoder() 
    let session = URLSession.shared 

    return Promise { fullfill, reject in 

     let dataTask = session.dataTask(with: request) { data, response, error in 
      if let data = data, 
       let json = (try? decoder.decode(CardDetails.self, from: data)) { 
       fullfill(json) 
      } else if let error = error { 
       reject(error) 
      } else if let response = response { 
       print(response) 
      } else if data != nil { 
       let data = NSError() 
       reject(data) 
      } else { 
       reject(PMKError.invalidCallingConvention) 
      } 
     } 
     dataTask.resume() 
    } 
} 

func fetchCardDetails(number: Int) { 
    _ = cardDetailsService.fetchCardDetails(withNumber: number).then { cardDetails -> Void in 

     //some actions with cardDetails 
    } 
} 

와 JSON을 얻을 것을 알고있다! 일반적으로 버그입니다. 자주하는 질문. PromiseKit에서 나에게 도움이되지 못했습니다.

오류가있는 JSON을 디코딩하고 전체를 변경해야합니까 폐쇄가 필요합니까?

답변

0

귀하의 if 성명 중이 부분은 성취하거나 거절하지 않습니다.

else if let response = response { 
    print(response) 
} 

이 충족하거나 그 약속은 결코 해결하지 않고 해결되지 않은 약속이 해제되는 경우가 콘솔에보고하는 경고를 인쇄 거부하지도합니다.

자세한 내용은 PromiseKit 문제 해결 가이드를 참조하십시오.