[SwiftUI]「ForEach」でcontinueやbreakが使えない[Xcode]

SwiftUI

どうも、ちょげ(@chogetarou)です。

ForEachでcontinueやbreakが使えないことについて解説します。

スポンサーリンク

制御構文

ForEachでcontinueやbreakを使おうとすると、以下のようなエラーが出ます。

Closure containing control flow statement cannot be used with result builder ‘ViewBuilder’

簡単に説明すると、ビューの中では制御構文は使えないということです。

SwiftUIでは、if以外の制御構文は、ビュービルダー(VStack ,HStackなど)内では使えなくなっています。

使えるのは、ButonのアクションやonApearのperformなどの処理前提のクロージャぐらいです。

なので、breakやcontinueを使おうとすると、エラーが出るのです。

また、whileやforも同じようにエラーが出ます。

対策

技術, コンピュータ, コード, Java スクリプトの設定, 開発者, プログラミング, プログラマ

breakやcontinueで処理を制御したい場面では、代わりにif文でどうにかしましょう。

基本的には、条件を限定したり、変えたりすればif文でも同じ処理が可能です。

例えば、「値が無ければbreakする」という処理だったら、「if文で値がある時のみ処理する」というように変えられます。

こればっかりは工夫するしかありません。

まとめ

SwiftUIでは、基本的に制御構文が使えなくなっているので、breakたcontinueは使えない。

breakやcontinueを使いたい場面は、if文などで代用する。

エラー関連の記事

コメント

タイトルとURLをコピーしました