有什么方便的方法可以将Binding<Error?>转换为Binding<Bool>?我有一个视图模型,它有一个属性@published var error: Error?。如果有错误,我想发出警告。但是Alert只接受Binding<Bool>作为参数。
我能够通过引入另一个属性来实现这一点,但在我看来,这似乎不是最有效的方法。
具有附加属性的代码
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")))
}
}
}发布于 2020-03-24 14:25:36
使用Binding<Bool>.constant($viewModel.error.wrappedValue != nil)
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")))
}
}
}https://stackoverflow.com/questions/60832875
复制相似问题