Swift/ContigeousArrayBuffer.swift:600:致命错误:索引超出范围

Cla*_*cho 7 ios swift swiftui

我有一个全局数组:

let genderList = ["Not Selected", "Woman", "Man", "Non Binary", "Trans", "Would rather not say"]
Run Code Online (Sandbox Code Playgroud)

结构体实例变量:

@State var selectedGender = genderList[0]
Run Code Online (Sandbox Code Playgroud)

我的视图中有一个选择器:

Picker("Please select your gender", selection: $selectedGender) {
    ForEach(genderList, id: \.self) {
        Text($0)
        }
}.pickerStyle(.wheel)
Run Code Online (Sandbox Code Playgroud)

对于我的一生,我似乎无法理解为什么这会引发以下错误:

Swift/ContigeousArrayBuffer.swift:600:致命错误:索引超出范围

我也尝试过类似的错误:

Picker("", selection: $selectedGender) {
    ForEach(genderList.indices, id: \.self) { index in
        Text(genderList[index])
    }
}.pickerStyle(.wheel)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。谢谢

小智 2

我有同样的错误,我找到了适合我的解决方案:

  1. .animation(.easeInOut, value: showingPicker)

ZStack {
        Color.black.opacity(0.2)
             .ignoresSafeArea()
       View() // your content here
        if shouldShowPicker {
            assetsPicker(selection: $viewModel.selection,
                   pickerModel: viewModel.pickerModel)
        }
    }.animation(.easeInOut, value: shouldShowPicker)
Run Code Online (Sandbox Code Playgroud)

选择器应该用动画隐藏,否则会崩溃。我不知道为什么,但Color.black.opacity(0.2).ignoresSafeArea()使它的动画流畅。