如何将发布的整数变量的可观察对象绑定到 SwiftUI 中的文本字段?
How to bind an observable objects published integer variable to a textField in SwiftUI?
我有一个视图模型 class 像这样:
class SharedViewModel: ObservableObject {
@Published var objectHeight: Int? = nil
}
我正在尝试绑定以将变量绑定到具有数字格式化程序的文本字段,就像这样(变量需要在整个过程中使用,因此在当前视图中,视图模型是一个 @EnvironmentObject
):
TextField("Height", value: $sharedViewModel.$objectHeight, formatter: NumberFormatter()
但当我在模拟器中按下回车键时出现此错误:无法将类型“__NSCFNumber”的值 (0x7fd9d6830fa8) 转换为 'Combine.Published<Swift.Optional<Swift.Int>>.Publisher' (0x7fd9d5197d10)。
编辑:使用可选的 Int 作为状态变量工作正常它是 Published 标签,同时使用 Observable 对象作为 EnvironmentObject 似乎是导致问题的原因。但是,我在 EnvironmentObject 中需要这个变量,因为它在多个视图中使用。
使其成为非可选的并删除 $objectHeight
之前的 $
。只留下 ViewModel 一个
$sharedViewModel.objectHeight
我有一个视图模型 class 像这样:
class SharedViewModel: ObservableObject {
@Published var objectHeight: Int? = nil
}
我正在尝试绑定以将变量绑定到具有数字格式化程序的文本字段,就像这样(变量需要在整个过程中使用,因此在当前视图中,视图模型是一个 @EnvironmentObject
):
TextField("Height", value: $sharedViewModel.$objectHeight, formatter: NumberFormatter()
但当我在模拟器中按下回车键时出现此错误:无法将类型“__NSCFNumber”的值 (0x7fd9d6830fa8) 转换为 'Combine.Published<Swift.Optional<Swift.Int>>.Publisher' (0x7fd9d5197d10)。
编辑:使用可选的 Int 作为状态变量工作正常它是 Published 标签,同时使用 Observable 对象作为 EnvironmentObject 似乎是导致问题的原因。但是,我在 EnvironmentObject 中需要这个变量,因为它在多个视图中使用。
使其成为非可选的并删除 $objectHeight
之前的 $
。只留下 ViewModel 一个
$sharedViewModel.objectHeight