首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘'Bool’不能在SwiftUI中转换为‘SwiftUI’

‘'Bool’不能在SwiftUI中转换为‘SwiftUI’
EN

Stack Overflow用户
提问于 2019-07-21 13:49:35
回答 1查看 9.7K关注 0票数 6

我有一个SwiftUI本地手表应用程序,我正在工作。我有一个基于Combine的类,它允许我存储`\userDefault,其中一个是简单的切换。

代码语言:javascript
复制
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>的错误消息

代码语言:javascript
复制
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>吗?如果不是,我该如何正确地解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-21 14:38:51

你错过了美元标志:

代码语言:javascript
复制
Toggle(isOn: self.$meetingSetup.twitterEnabled) { ... }

我还注意到在您的@BindableObject中使用的是@BindableObject,但是您确实应该使用willSet

最后,也许你不完全粘贴,但你错过了一个结束括号在你的看法。

如果您不知道美元标志是什么,请查看SwiftUI.中的WWDC2019视频数据流。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57133806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档