【发布时间】:2019-07-21 13:49:35
【问题描述】:
我正在开发一个 SwiftUI 原生 Watch 应用程序。我有一个基于Combine 的类,它允许我存储`\userDefaults,其中之一是一个简单的切换。
import SwiftUI
import Foundation
import Combine
class MeetingSetup: BindableObject {
let willChange = PassthroughSubject<Void, Never>()
var twitterEnabled: Bool = false {
didSet {
willChange.send()
}
}
init() {
let prefs:UserDefaults = UserDefaults(suiteName: "group.com.appname")!
twitterEnabled = prefs.bool(forKey: "keyTwitterEnabledBool")
}
}
在SwiftUI 中,我收到Bool 无法转换为Binding<Bool> 的错误消息
import SwiftUI
import Combine
struct SetupView : View {
@ObjectBinding var meetingSetup: MeetingSetup = delegate.meetingSetup
var body: some View {
HStack{
Toggle(isOn: self.meetingSetup.twitterEnabled){ // <== 'Bool' in not convertible to 'Binding<Bool>'
Text("Twitter")
}
}
}
我不明白为什么会收到消息,因为代码是@ObjectBinding,根据定义它不应该是Binding<Bool> 吗?如果不是,我该如何正确解决这个问题??
【问题讨论】: