【发布时间】:2021-04-17 22:25:36
【问题描述】:
这里有几行代码
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 }
而且效果很好……
【问题讨论】:
-
您使用的是什么索引?
1? -
索引将在 if let 语句中设置.. 我多次使用这个结构没有任何问题.. 到目前为止 ;-) ... 所有变量都被打印出来
标签: arrays swift multidimensional-array