swift - 如何使用 combine Publisher 更改线程?
问题描述
我正在使用 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 的更新。
推荐阅读
- wso2 - WSO2 ESB/EI:如何将原始 JSON 正文转换为 XML 有效负载
- javascript - 如何从服务器的子文件夹中使用 socket.io?
- javascript - 如何在 Typescript 和 React.js 中使用随机字段解析 JSON
- powerbi - 使用 DAX 在 Power Bi 中计算文本函数中的错误
- sql - 如何在 SQL Server 中使用过滤规则将多行合并为一行
- python - python中的打印函数和普通字符串
- botframework - 代表用户使用机器人在 Teams 中发送消息
- python - Tkinter:OptionMenu 导致“NoneType”跟踪错误
- java - 如何建立一个接受任何请求的休息服务?
- python - Django NameError:未定义名称“字符”