🏍️

SwiftUIでCoreDataを更新するとdismissする現象と対策

2022/05/01に公開

SwiftUIで不思議な現象があったので共有します。

ある FirstView から SecondViewNavigationLink で遷移して、遷移先のViewでCoreDataを更新すると SecondView が dismiss され、 FirstView に戻る現象が起きていました。

この現象が起きる最低限のコードは以下の通りです。

このコードでは SecondViewButton を押すと Item の更新が実行されるのだが、そのタイミングで FirstView に戻るようになっていました。

この現象の原因は FirstViewItemListItem に変換する以下のコードにありました。
このコードを削除することで解決しました。

private var listItems: [ListItem] {
   return self.items.map({ ListItem(date: $0.timestamp ?? Date()) })
}

もしこの現象に困っている方がいましたら、参考にしてみて下さい。
そして本当の原因を知っている方がいましたら、教えていただけると嬉しいです。

Discussion