gpt4 book ai didi

ios - 如何解决 - 合并错误 |错误域=NSURLErrorDomain 代码=-999 "cancelled"

转载 作者:行者123 更新时间:2023-12-01 15:26:36 28 4
gpt4 key购买 nike

我正在尝试使用新的组合框架解析 JSON。但是,我所做的每一次尝试都会返回一个取消的错误。当我使用完全相同的 url 而没有组合时,它工作正常。

底部函数工作正常,无论我做什么,顶部函数都会给我一个错误。

static func performNetworkRequestUsingCombine(url urlWithQuery:URL){
//let decoder = JSONDecoder()
let publisher = URLSession.shared.dataTaskPublisher(for: urlWithQuery)
.map({$0.data})

.eraseToAnyPublisher()
.sink(receiveCompletion: { (status) in
switch status {
case .failure(let incomingError):
print(incomingError.localizedDescription)
case .finished:
break
}
}) { (data) in
let dataString = String(data: data, encoding: .utf8)
print(dataString!)
}
publisher.cancel()
}

static func performNetworkRequest(url urlWithQuery: URL, dataValue : @escaping (WeatherObject)->Void){

let decoder = JSONDecoder()
let task = URLSession.shared.dataTask(with: urlWithQuery) { (data, response, error) in

if error != nil {
print(error!.localizedDescription)
return
}
if let data = data {
do {
let weatherData = try decoder.decode(WeatherObject.self, from: data)
dataValue(weatherData)
} catch let localError {
print(localError.localizedDescription)
}
}
}
task.resume()
}

}

我希望收到终端中打印的 JSON 数据,但收到以下错误:

2019-10-25 14:59:34.452071-0400 Clima[2127:98883] 任务 <663D6D3A-48B8-49E6-9103-AA1D89513D84>.<1> 完成时出现错误“Code=URL9Domain=9Domain”Error取消” UserInfo={NSErrorFailingURLStringKey= https://api.openweathermap.org/data/2.5/weather?lon=-122.4&APPID=29ecd35ff6b9e63498cb8fb479ba6ca0&units=imperial&lat=37.8 , NSLocalizedDescription=取消, NSErrorFailingURLKey= https://api.openweathermap.org/data/2.5/weather?lon=-122.4&APPID=29ecd35ff6b9e63498cb8fb479ba6ca0&units=imperial&lat=37.8 }

最佳答案

添加了 .receive(on:) 运算符,这解决了问题!

static func performNetworkRequestUsingCombine(url urlWithQuery:URL){
//let decoder = JSONDecoder()

let publisher = URLSession.shared.dataTaskPublisher(for: urlWithQuery)
.map({$0.data})
.receive(on: DispatchQueue.main)
.sink(receiveCompletion: { (completionError) in
switch completionError {
case .failure(let error):
print(error.localizedDescription)
case .finished:
break
}
}) { (data) in
guard let stringData = String(data: data, encoding: .utf8) else {return}
print(stringData)
}
publisher.cancel()
}

关于ios - 如何解决 - 合并错误 |错误域=NSURLErrorDomain 代码=-999 "cancelled",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58564495/

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