【发布时间】:2019-08-31 07:24:24
【问题描述】:
在 Xcode 11 beta 5 或 6 中,我依赖于 URLSession.DataTaskPublisher 的现有代码停止工作。 DataTaskPublisher 似乎从未发布任何值,但我不知道为什么。
我已尝试将.sink 和.handleEvents 作为订阅者。我已经用Just 发布者测试了 .sink 并确认它在那里收到了一个值。
我也尝试过给DataTaskPublisher 一个URL 和一个URLRequest。我尝试了对 API 的请求,包括授权标头,以及对 google.com 和 apple.com 的基本请求。我尝试使用URLSession.shared 并创建URLSession 的新实例。我也尝试过使用和不使用 map 和 decode 运算符。
我已经使用 XCTest 期望来确认测试每次都会超时,即使我给它设置了 4 分钟的超时时间。
我刚刚创建了一个新的示例项目,并在根视图控制器中使用以下代码复制了问题:
override func viewDidLoad() {
super.viewDidLoad()
print("view did load")
URLSession.shared.dataTaskPublisher(for: URL(string: "http://apple.com")!)
.handleEvents(receiveSubscription: { (sub) in
print(sub)
}, receiveOutput: { (response) in
print(response)
}, receiveCompletion: { (completion) in
print(completion)
}, receiveCancel: {
print("cancel")
}, receiveRequest: { (demand) in
print(demand)
})
}
项目打印“视图已加载”,但没有打印任何其他内容。关于我在哪里出错的任何想法?谢谢!
【问题讨论】:
-
avanderlee.com/debugging/combine-swift 可能有一些提示。 print 和 catch 似乎很有用。
-
@matt — URL 重定向应该没问题,但我也尝试了其他 URL,并且所有这些 URL 都有相同的问题,所以这似乎不是问题。不过,感谢您的建议。