Xcode 操场上的 SwiftUI 和 foreach 问题

Oma*_*nem 3 swift xcplayground swiftui

我试图在 SwiftUI 中执行一个简单的代码,但它显示错误:执行被中断,原因:信号 SIGABRT。这是一个代码`

struct ContentView: View {

    let data = (1...100).map { "Item \($0)" }

    let columns = [
        GridItem(.adaptive(minimum: 80))
    ]
    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 20) {
                ForEach(data, id: \.self) { item in
                    Text(item)
                }
            }
            .padding(.horizontal)
        }
        .frame(maxHeight: 300)
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*arx 5

在使用 ForEach 时,Playground(至少是这个版本)似乎存在一个错误。我有同样的问题,您可以在 CrashLogs 中找到更多详细信息console

使用 ForEach检查崩溃的操场

变通方法

  • 将 ContentView 移动到 Playground Sources 中的单独文件
  • 不要忘记公共修饰符

public struct ContentView: View {

    let data = (1...100).map { "Item \($0)" }

    let columns = [
        GridItem(.adaptive(minimum: 80))
    ]
    
    public init() {}
    
    public var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 20) {
                ForEach(data, id: \.self) { item in
                    Text(item)
                }
            }
            .padding(.horizontal)
        }
        .frame(maxHeight: 300)
    }
}
Run Code Online (Sandbox Code Playgroud)