问题描述
class Sharedviewmodel: ObservableObject {
@Published var objectHeight: Int? = nil
}
并且我正在尝试将变量绑定到带有数字格式化程序的文本字段,就像这样(变量需要在整个过程中使用,因此在当前视图中,视图模型是 @EnvironmentObject
):
TextField("Height",value: $sharedviewmodel.$objectHeight,formatter: NumberFormatter()
但是当我在模拟器中按下 Enter 键时出现此错误:无法将类型 '__NSCFNumber' (0x7fd9d6830fa8) 的值转换为 'Combine.Published
编辑:使用可选的 Int 作为状态变量工作正常,它是 Published 标记,同时使用 Observable 对象作为 EnvironmentObject 似乎是导致问题的原因。但是,我需要在 EnvironmentObject 中使用这个变量,因为它在多个视图中使用。
解决方法
将其设为非可选并删除 $
之前的 $objectHeight
。只留下 ViewModel 一个
$sharedViewModel.objectHeight