我有一个包含交易类别的类(请参阅下面的示例代码),用户可以在设置过程中从中选择一个子集以在应用程序中使用。稍后在事务输入期间,如果未选择类中的第一个类别(在设置期间)并且选择器状态参数初始化为零,我会看到控制台消息“选择器:选择“0”无效并且没有关联的标签,这将给出未定义的结果”。事实上,如果状态参数初始化为 5 并且在设置过程中未选择第 5 个类别,它也会给出相同的警告。
我的问题是如何初始化状态参数,这样我就不会收到此选择器警告?
从控制台消息中我认为问题出在 ForEach 循环而不是条件。但如果删除条件if categories.catItem[item].catInUse == true {,我就看不到警告。
例如,在下面的代码中,如果在应用程序设置期间未选择类别Cat A(catInUse 为 false)并且交易条目选择器状态参数为,
@State private var entryCat: Int = 0我将看到上面的控制台警告消息。类别Cat A仍然在列表中 - 只是没有显示。
struct getCategory: View {
@EnvironmentObject var categories: Categories
@State private var entryCat: Int = 0
var body: some View {
Section(header: Text("Select Category")) {
Picker(selection: $entryCat, label: Text("")) {
ForEach(0 ..< categories.catItem.count, id: \.self) { item in
if categories.catItem[item].catInUse == true {
Text(categories.catItem[item].catName)
.bold()
} …Run Code Online (Sandbox Code Playgroud)