@EnvironmentObjectから@Stateに切り替えたときに変数が同期されない時の解決法
https://waarumstudy.blogspot.com/2020/03/environmentobjectstate.html
問題の内容
SwiftUIのアプリを作っているときに、複数のViewにまたがって使う値をまとめたクラスを@EnvironmentObjectで管理していました。しかし、とあるSwiftUIの記事を読んで@EnvironmentObjectを安易に使わないほうが良いのではないかと考え、@Stateで管理するように書き換えました。すると、階層間での受け渡しはできているはずなのにデータを読み取れない子viewがでてきてしまいました。
解決法
@EnvironmentObjectでは@ObservableObjectプロトコルに適合させるために「Viewにまたがって使う値をまとめたもの」はクラスで作っていました。しかし@Stateではクラスを管理できないようで、まとめたものをクラスから構造体に変えることできちんと値の受け渡しができるようになりました。