7

我正在使用 Combine 和 SwiftUI 来做一些异步操作,关键是我不知道如何从主线程中的异步操作接收响应。苹果文档说它可以用于 RunLoop.main,但目前在 Swift 5.0 中它不是调度程序。那么对此有什么想法吗?

我曾尝试按照苹果文档使用,但没有运气。

anyPublisher
    .receiveOn(on: RunLoop.main)
4

1 回答 1

7

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 的更新

于 2019-06-11T20:20:14.593 回答