ios - SwiftUI 致命错误:索引超出范围:文件 Swift/ContiguousArrayBuffer.swift
问题描述
我有一个环境对象,它是一个数组,并且在我的设置页面中有一个面板,用户可以在其中向数组添加/删除值......这是数组中的项目列表,为用户直观地显示:
ScrollView {
VStack {
ForEach(self.env.numbers.indices, id: \.self) { number in
ZStack {
HStack {
Text("#\(number + 1): ")
.font(Font.custom(K.font.montserratMedium, size: 17.0))
.foregroundColor(Color(K.SettingsTextColor))
// Spacer()
NumberTextField(self.env.numbers[number], text: self.$env.numbers[number])
}
}
}
}
}
在我的视图底部是一个切换,用于更改数组中的项目数:
Stepper(onIncrement: {
self.env.numbers.append("12345")
print("default number should be added")
print(self.env.numbers.indices)
print(self.env.numbers)
print("count = \(self.env.numbers.count)")
},
onDecrement: {
if self.env.numbers.count != 0 {
print("number should be removed")
self.env.numbers.removeLast(1)
// also tried self.env.numbers = self.env.numbers.droplast() but this didnt work
print(self.env.numbers.indices)
print(self.env.numbers)
print("count = \(self.env.numbers.count)")
}
NumberTextField 视图是一个 UIKit UITextField 包装器,似乎工作正常。这一切都很好,直到我尝试减少步进器,并且我得到索引超出范围错误(这令人惊讶地显示了应用程序委托中发生的错误)......任何想法如何解决这个问题?
解决方案
推荐阅读
- python - 使用 scrapy-splash 抓取 javascript 生成的结果
- asp.net-core - appsettings.{ENVIRONMENT}.json 未转换 - 将 asp.net 5 Web 应用程序部署到 IIS
- amazon-web-services - 通过复制规则进行跨账户 S3 存储桶复制
- codeigniter - 将函数获取到其他函数模型 codeigniter 使我的数据表显示长度不起作用
- vue.js - 使用 Vuex 模块更好,还是拥有多个商店?
- r - 箱线图 y 轴上的自定义刻度数
- datatable - 为什么我不能使用 gtsummary 制作表格?
- java - 使用 Gradle 创建具有多层 jar 文件的优化 docker 映像
- node.js - 如果用户 DM 机器人,discord.js 机器人会向 DM 发送垃圾邮件
- mysql - MySQL中`with xxx AS()`的等效语法是什么