【SwiftUI】”Extra argument in call” というエラーの原因と対応方法

SwiftUI

先日SwiftUIでアプリを作っていたところ、「Extra argument in call」というエラーが発生しました。
今回はその原因と対応方法について説明していきます。

原因

単刀直入にいうと、原因はViewBuilder内のbuildBlockの数が多すぎたからでした。
(10個までらしいですね。)

struct ContentView: View {
    var body: some View {
        VStack {
            Text("1")
            Text("2")
            Text("3")
            Text("4")
            Text("5")
            Text("6")
            Text("7")
            Text("8")
            Text("9")
            Text("10")
            Text("11")
            Text("12")
            Text("13")
            Text("14")
            Text("15")
        }
    }
}

こんな感じだとダメらしい。

対応方法

対応方法は、buildBlockが多くなる場合はGroupを使用して実装する方法です。

struct ContentView: View {
    var body: some View {
        VStack {
            Group {
                Text("1")
                Text("2")
                Text("3")
                Text("4")
                Text("5")
                Text("6")
                Text("7")
                Text("8")
                Text("9")
                Text("10")
            }
            Group {
                Text("11")
                Text("12")
                Text("13")
                Text("14")
                Text("15")
            }
        }
    }
}

これだけでエラーは解消されます。

コメント