gpt4 book ai didi

json - 使用 PromiseKit 和 Swift 标准网络处理拒绝?

转载 作者:行者123 更新时间:2023-11-30 12:01:38 25 4
gpt4 key购买 nike

我有一个小函数,它使用 native 解决方案来解析和解码 JSON。除了处理错误之外,一切正常。我知道当错误发生时,我应该得到带有 errormessage

的 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
}
}

当收到错误时 - 没有崩溃,但我收到错误待处理的 promise 已解除分配!这通常是一个错误。常问问题。但 PromiseKit 并没有帮助我。

我是否应该解码带有错误的 JSON 并更改整个 reject 闭包?

最佳答案

if 语句的这一部分既不满足也不拒绝。

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

如果您既不履行也不拒绝,则 promise 永远不会解决,如果 Unresolved promise 被解除分配,它会将您看到的警告打印到控制台。

请参阅 PromiseKit 故障排除指南以了解更多信息。

关于json - 使用 PromiseKit 和 Swift 标准网络处理拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com