我正在使用 Combine 和 SwiftUI 来做一些异步操作,关键是我不知道如何从主线程中的异步操作接收响应。苹果文档说它可以用于 RunLoop.main,但目前在 Swift 5.0 中它不是调度程序。那么对此有什么想法吗?
我曾尝试按照苹果文档使用,但没有运气。
anyPublisher
.receiveOn(on: RunLoop.main)
Combine
- 在撰写本文时 - 尚未完全集成到Foundation
.
根据 Xcode 11 Beta发行说明:
组合框架的 Foundation 集成不可用。以下 Foundation 和 Grand Central Dispatch 与 Combine 的集成不可用:KeyValueObserving、NotificationCenter、RunLoop、OperationQueue、Timer、URLSession、DispatchQueue、JSONEncoder、JSONDecoder、PropertyListEncoder、PropertyListDecoder 和 @Published 属性包装器。(51241500)
根据最新的Xcode 11 beta (2),此问题已得到修复,因此希望您的代码能够正常工作。
Combine 框架的 Foundation 集成现在可用。以下 Foundation 和 Grand Central Dispatch 与 Combine 的集成可用:KeyValueObserving、NotificationCenter、RunLoop、OperationQueue、Timer、URLSession、DispatchQueue、JSONEncoder、JSONDecoder、PropertyListEncoder、PropertyListDecoder 和 @Published 属性包装器。(51241500)
感谢@Martin R 和@silicon_valley 的更新。