gpt4 book ai didi

swift - URLSession.shared.dataTaskPublisher 不适用于 IOS 13.3

转载 作者:行者123 更新时间:2023-11-29 05:12:56 32 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 所说,你的出版商活得不够长。您可以存储 AnyCancellable例如var ,或者我喜欢做的(并且似乎是 redux 最佳实践)是使用 store(in:)Set<AnyCancellable>保留它并在对象被释放时自动清理它。2. 为了启动实际的网络请求,您需要 sinkassign值。

所以,把这些放在一起:

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/59506120/

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