SwiftUI - 填充修饰符上的三元运算符会使程序崩溃

SwiftUI - Ternary operator on padding modifier crashes program

我在 SwiftUI 中有一个 ZStack,里面装满了 ForEach 提供的一些组件,如下所示:

ForEach(0..<arr.count) { i in
  ZStack {
    ...
  }

  // I use i later in this code
  ...
}

程序就这样完美运行

但我只想在 i == 0 时向 ZStack 添加填充,所以我尝试将此修饰符添加到 ZStack:.padding(.top, i == 0 ? 70 : 0)

当我尝试使用此修改器构建它时,它失败了,但甚至没有说“构建失败”。尝试构建大约需要 5 分钟(通常需要 5 秒)然后决定崩溃。谁能解释为什么会这样,以及我如何在不破坏我的程序的情况下获得这个条件填充?

试试这个:

ForEach(0..<arr.count) { i in
  ZStack {
    ...
  }
  .padding(.top, getPadding(i))

  // I use i later in this code
  ...
}
func getPadding(_ i: Int) -> CGFloat {
        if i == 0 {
                return CGFloat(70)
        }
            
        return CGFloat(0)
}