【发布时间】:2023-03-06 11:51:01
【问题描述】:
iOS 13、Swift 5.x
我正在尝试在组合订阅/发布器上获得正确的语法。我有一个工作示例,我试图复制它,但我遗漏了一些东西;我只见树木不见森林。这是我的代码。
import Foundation
import Combine
class SwiftUIViewCModel: ObservableObject {
@Published var state : SwiftUIViewCModelState = .page1
static let shared = SwiftUIViewCModel()
private var stateUpdatingSubscriber: AnyCancellable?
init() {
self.stateUpdatingSubscriber = nil
self.stateUpdatingSubscriber = SwiftUIViewCModel.shared.$state
.map(modelCTomodelD(modelState:))
.receive(on: RunLoop.main)
.assign(to: \.state, on: self)
}
private func modelCTomodelD(modelState: SwiftUIViewCModelState) -> SwiftUIViewEModelState {
switch modelState {
case .page1:
return .page1
case .page2:
return .page2
default:
break
}
}
}
enum SwiftUIViewEModelState {
case page1
case page2
}
enum SwiftUIViewCModelState {
case page1
case page2
}
我在编译时遇到语法错误,但我不明白我究竟需要做什么来修复它。
无法将类型“(SwiftUIViewCModelState) -> SwiftUIViewEModelState”的值转换为预期的参数类型“KeyPath
如何在此代码中获取它需要的格式?
谢谢
【问题讨论】:
标签: swift dictionary subscription assign combine