SwiftUIではビューの構築にif文を使うことができる。

var body: some View {
    if Bool.random() {
        return Text("YOU WIN!")
    } else {
        return Text("YOU LOSE")
    }
}

Bool.ramdom()ではtrueとfalseをランダムで返すメソッドで、上記は返される値によって表示させるテキストを変える例だ。

次に以下の例を見てみよう。

var body: some View {
    if Bool.random() {
        return Image("win-image")
    } else {
        return Text("YOU LOSE")
    }
}

一見同じように見えるコードだが、こちらの例は条件によって返すビューの型が異なる。

この場合、body計算型プロパティの戻り値some Viewの型が、実行時でないと定まらないためエラーが発生してしまう。

このような場合は、Groupビューに入れてしまうことでエラーを回避することができる。

var body: some View {
    Group {
        if Bool.random() {
            Image("win-image")
        } else {
            Text("YOU LOSE")
        }
    }
}

Groupビューは内包するビューをまとめてしまうコンテナの役割を持ち、HTMLのdivタグにイメージとしては近い。

要は複数のビューをまとめて戻り値をGroupビューにしていることでエラーを回避しているので、VStackやHStackなどでまとめても同じようにエラーを回避することができる。