バッテラのハローワールド研究室

エンジニア、プログラミングに関する情報を掲載中!

【SwiftUI】SwiftUIだと繰り返し処理はforではなくForEachを使わないといけない

SwiftUI

はじめに

今日はSwiftUIのプログラムについて勉強していきます。

タイトルの通りSwiftUIのbodyの実装ではforやforEachは使えないという洗礼を受けてしまったのでそこを共有していこうと思います。

環境

この記事の情報は次のバージョンで動作確認しています。

* MacOS Monterey (12.1)
* Xcode (13.3.1)

ダメな例

Listの中にfor文で5個Textを配置するというプログラムを書きます

var body: some View {
    List {
        for i in 0..<5 {
            Text("Hoge")
        }
    }
}

↓のエラーが出てしいます。

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

このようにbodyの中ではforが使えません(forEachも使えません)

代わりにForEachを使おう

var body: some View {
    List {
        ForEach (0..<5) { i in
            Text("Hoge")
        }
    }
}

どうやらForEachはSwiftUI専用に作られた繰り返しするための構造体のようです。

おわりに

ForEachはStoryboardでプログラム組んでるときに見てないキーワードだなぁと思ってましたが、SwiftUI用だったんですね。

また1つ勉強になりました。

最後まで見ていただきヘペトナス!

読者登録・Twitterのフォローもお願いします。