arrays - swift array.firstIndex(where: ...) 索引超出范围...但是为什么呢?
问题描述
这是一些代码行
print ("dayNumber: \(dayNumber)")
print ("all: \(self.RKINumbersOfDays)")
print ("kindOf: \(kindOf): \(self.RKINumbersOfDays[kindOf])")
let indexToUse: Int
if let foundIndex = self.RKINumbersOfDays.firstIndex(where: { $0[kindOf] < dayNumber } ) {
indexToUse = foundIndex
} else {
indexToUse = 0
}
这给出了这个输出
dayNumber: 7316
all: [[7316], [7316], [7316], [7316]]
kindOf: 1: [7316]
Fatal error: Index out of range: file Swift/ContiguousArrayBuffer.swift, line 444
2021-01-12 23:12:29.720561+0100 CoBaT[7595:6310152] Fatal error: Index out of range: file Swift/ContiguousArrayBuffer.swift, line 444
(lldb)
在调试模式下,“if let foundIndex = self.RKINumbersOfDays.firstIndex(where ...”行被标记为红色,并带有“致命错误:索引超出范围”
但为什么???
编辑:嗯,有时“你看不到阿甘,因为所有的树”;-)
当然:正确的语法是:
self.RKINumbersOfDays[kindOf].firstIndex(where: { $0 < dayNumber }
而且效果很好...
解决方案
kindOf
这里的变量
print ("kindOf: \(kindOf): \(self.RKINumbersOfDays[kindOf])")
用于主数组计数(RKINumbersOfDays
),而这里用于子元素计数
$0[kindOf] < dayNumber
其中一个的计数小于kindOf
(这里所有计数均为 1,因此最大索引应为 0 而不是 1)
推荐阅读
- reactjs - Next.js 错误使用 layout="responsive" 在图像上添加“尺寸”
- java - 如何将数据从 mysql 数据库检索到仪表板中的 div?
- curl - curl PATCH HTTP2 错误
- kotlin - 使用 Flow 进行 LiveData 转换
- python - 当我减小圆圈的比例时,如何删除以前的圆圈?
- c# - 在类中实现 INotifyPropertyChanged
- reactjs - API 密钥是否通过 get 请求公开?
- python - 使用metpy.calc.advection 时出错:AttributeError: crs 属性不可用
- java - 使用@Formular 计算实体属性
- html - css:带有@media查询的iframe标签的响应式样式不起作用