Swiftui 分配观测状态’;将已发布的值添加到状态

Swiftui 分配观测状态’;将已发布的值添加到状态,swiftui,state,observableobject,observedobject,Swiftui,State,Observableobject,Observedobject,我有一种状态叫做时间 @State var time = 0 还有一个被观测到的物体,叫做定时器记录器 @ObservedObject var timerWrapper = TimerWrapper() 可以从子视图更新时间,我希望也能够使用TimerRapper(ObservedObject)更新时间,如果我使用此选项: self.time = self.timerWrapper.remainingSeconds 这样做: Text($time) 文本不会更新。只有当我这样做时,它才会

我有一种状态叫做时间

@State var time = 0
还有一个被观测到的物体,叫做定时器记录器

@ObservedObject var timerWrapper = TimerWrapper()
可以从子视图更新时间,我希望也能够使用TimerRapper(ObservedObject)更新时间,如果我使用此选项:

self.time = self.timerWrapper.remainingSeconds
这样做:

Text($time)
文本不会更新。只有当我这样做时,它才会起作用:

Text(self.timerWrapper.remainingSeconds)
我知道这是因为当remainingSeconds发布时,它将重新加载UI。
但是我怎么才能避开这个问题呢?提醒我有两个可能的源可以更新时间,这就是为什么我在viewbuilder中创建文本时不直接使用观察对象的原因。

如果要更新视图模型发布属性上的本地状态(无论出于何种原因),以下是一种方法

Text(time)   // << not binding, just property
   .onReceive(timerWrapper.$remainingSeconds) { value in // listen for publisher $
      self.time = value
   }

Text(time)//决定谁“拥有”此数据。并更新同一来源。是否存在无法将绑定传递到子视图的
self.$timeWrapper.remainingSeconds
的原因?为什么需要
@State var time
?@NewDev-yey它可以工作!嗯。。。但是想知道这是否是最好的方法如果你有可以改变状态的外部事物,最好使用视图模型,即
ObservedObject
作为视图的真实来源。