【SwiftUI】構造体の配列の要素を消すとIndexOutOfRangeが出た話

SwiftUIで入力データを保持する構造体を作った。

この構造体を以下のようにBindingさせて使っていた。

入力データは1つだけではなく、増やしたり減らしたりしたいので、構造体Gymの配列inputsを宣言して以下のように使う。

この状態で構造体の配列を1つ削除するとクラッシュする。(要素を追加するのはOK)


解決策としては、構造体ではなくObservableを継承したクラスにして、@Bindingから@Observedに変更すれば良い。

参考:

https://www.yururiwork.net/【swiftui】謎のindex-out-of-rangeクラッシュで苦戦した話/

ABOUTこの記事をかいた人

のっくん

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog