首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Binding<Error?>转换为Binding<Bool>

如何将Binding<Error?>转换为Binding<Bool>
EN

Stack Overflow用户
提问于 2020-03-24 14:16:21
回答 1查看 226关注 0票数 0

有什么方便的方法可以将Binding<Error?>转换为Binding<Bool>?我有一个视图模型,它有一个属性@published var error: Error?。如果有错误,我想发出警告。但是Alert只接受Binding<Bool>作为参数。

我能够通过引入另一个属性来实现这一点,但在我看来,这似乎不是最有效的方法。

具有附加属性的代码

代码语言:javascript
复制
class SampleViewModel: ObservableObject {

    @Published
    var error: Error? {
        didSet {
            isError = error != nil
        }
    }

    @Published
    var isError: Bool = false
}

struct SampleView: View {
    @ObservedObject
    var viewModel: SampleViewModel

    var body: some View {
        EmptyView().alert(isPresented: $viewModel.isError) { () -> Alert in
            Alert(title: Text("Error"), message: Text(viewModel.error!.localizedDescription), dismissButton: .default(Text("OK")))
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-24 14:25:36

使用Binding<Bool>.constant($viewModel.error.wrappedValue != nil)

代码语言:javascript
复制
class SampleViewModel: ObservableObject {

    @Published
    var error: Error?
}

struct SampleView: View {
    @ObservedObject
    var viewModel: SampleViewModel

    var body: some View {

        let isError = Binding<Bool>.constant($viewModel.error.wrappedValue != nil)

        return EmptyView().alert(isPresented: isError) { () -> Alert in
            Alert(title: Text("Error"), message: Text(viewModel.error!.localizedDescription), dismissButton: .default(Text("OK")))
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60832875

复制
相关文章

相似问题

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