В Xcode 11 beta 5 или 6 мой существующий код, который полагался на URLSession.DataTaskPublisher
, перестал работать. Кажется, что DataTaskPublisher
никогда не публикует никаких значений, но я не могу понять почему.
Я пробовал с .sink
и .handleEvents
в качестве подписчиков. Я протестировал .sink с Just
издателем и подтвердил, что он там получает значение.
Я также пробовал дать 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)
})
}
Проект печатает «вид загружен», но больше ничего не печатает. Есть идеи о том, где я здесь ошибаюсь? Спасибо!