[SwiftUI] EnvironmentObjectの落とし穴

SwiftUI

Environmentで参照するNSManagedObjectContextが、おかしな値の時がありました。

原因を調べましたのでメモ。

EnvironmentObjectは、ビューが階層関係の時に有効

NavigationViewでビューが遷移している時には、Environmentの値として、きちんと同じ値を渡してくれました。

.sheetで表示すると、(恐らく新しいビューと認識されて)別のNSManagedObjectContextが渡されていました。

[解決策]異なるビュー階層でのEnvironmentの扱い方

自分でビューを構築する時に、.environmentを付与して、明示的に渡す必要があります。

MEMO
EnvironmentObjectの振る舞いと、CoreDataの振る舞いの両方の重なる領域なので、理解が難しいかも。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です