如何将可观察对象发布的整数变量绑定到 SwiftUI 中的 textField?

问题描述

我有一个像这样的视图模型类:

class Sharedviewmodel: ObservableObject {
    @Published var objectHeight: Int? = nil
}

并且我正在尝试将变量绑定到带有数字格式化程序的文本字段,就像这样(变量需要在整个过程中使用,因此在当前视图中,视图模型是 @EnvironmentObject):

TextField("Height",value: $sharedviewmodel.$objectHeight,formatter: NumberFormatter()

但是当我在模拟器中按下 Enter 键时出现此错误:无法将类型 '__NSCFNumber' (0x7fd9d6830fa8) 的值转换为 'Combine.Published>.Publisher' (0x7fd9d5197d10 ).

编辑:使用可选的 Int 作为状态变量工作正常,它是 Published 标记,同时使用 Observable 对象作为 EnvironmentObject 似乎是导致问题的原因。但是,我需要在 EnvironmentObject 中使用这个变量,因为它在多个视图中使用。

解决方法

将其设为非可选并删除 $ 之前的 $objectHeight。只留下 ViewModel 一个

$sharedViewModel.objectHeight