gpt4 book ai didi

swift - URLSession.shared.dataTaskPublisher 在 IOS 13.3 上不起作用

转载 作者:行者123 更新时间:2023-12-01 07:47:50 24 4
gpt4 key购买 nike

尝试发出网络请求时,出现错误

finished with error [-999] Error Domain=NSURLErrorDomain Code=-999 "cancelled"

如果我使用 URLSession.shared.dataTask而不是 URLSession.shared.dataTaskPublisher它将在 IOS 13.3 上运行。

这是我的代码:
return  URLSession.shared.dataTaskPublisher(for : request).map{ a in
return a.data
}
.decode(type: MyResponse.self, decoder: JSONDecoder())
.receive(on: DispatchQueue.main)
.eraseToAnyPublisher()

此代码适用于 IOS 13.2.3。

最佳答案

你在这里有两个问题:
1. 就像@matt 所说,你的出版商活得不够长。您可以存储 AnyCancellablevar为例,或者我喜欢做的(并且似乎是一个 redux 最佳实践)是使用 store(in:)Set<AnyCancellable>保留它并在对象被释放时自动清理它。
2. 为了启动实际的网络请求,您需要 sinkassign值(value)。

所以,把这些放在一起:

var cancellableSet: Set<AnyCancellable> = []

func getMyResponse() {
URLSession.shared.dataTaskPublisher(for : request).map{ a in
return a.data
}
.decode(type: MyResponse.self, decoder: JSONDecoder())
.receive(on: DispatchQueue.main)
.replaceError(with: MyResponse())
.sink { myResponse in print(myResponse) }
.store(in: &cancellableSet)
}

关于swift - URLSession.shared.dataTaskPublisher 在 IOS 13.3 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279806/

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