代码:
class AppStore: ObservableObject {
@Published var settings = Settings()
}
struct Settings {
var account = Account()
}
class Account {
@Published username
}
@EnvironmentObject appStore = AppStore()
VStack {
TextField("username", &appStore.settings.username)
Button("Change") {
appStore.settings.username += "a"
}
}
发生了什么:
appStore.settings.username += "a"
无法触发视图的更新。但是对 TextField 的输入可以触发视图的更新。
问题:
我明白为什么appStore.settings.username += "a"
不能触发视图的更新。ObservableObject 只能观察 value 的变化,但是 account 是 refrence 类型的。所以当我们更改 account 的属性时,appStore 中的值没有变化。但是不知道为什么会出现第二种情况