【发布时间】:2017-11-06 19:37:27
【问题描述】:
我有一个小函数,它使用本机解决方案来解析和解码 JSON。一切正常,除了处理错误。我知道当错误发生时,我应该得到带有 error 和 message
的 JSON 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
}
}
收到错误时 - 没有崩溃,但我收到错误 Pending Promise 已解除分配!这通常是一个错误。常问问题。不过来自 PromiseKit 并没有帮助我。
我是否应该解码错误的 JSON 并更改整个 reject 闭包?
【问题讨论】:
标签: json swift networking promisekit