gpt4 book ai didi

swift - 有人可以确定为什么我的索引超出范围吗?

转载 作者:行者123 更新时间:2023-11-28 05:36:30 25 4
gpt4 key购买 nike

我正在尝试从文件中读取数据并将它们存储在二维数组中。

我遇到错误“tempArr[x] = number!”,这是索引超出范围。

我找不到问题的原因。

    func loadData(){

let path = "/Users/ushehri/Desktop/imageData/imageData/imageData/imageData.txt"

let filemgr = FileManager.default
if filemgr.fileExists(atPath: path){

do {
var x = 0

let fullData = try String(contentsOfFile: path, encoding: String.Encoding.utf8)

let readings = fullData.components(separatedBy: ",") as [String]
var tempArr = [Double]()
for i in 0..<readings.count {

let number = Double(readings[i])

tempArr[x] = number!
x = x + 1
if( x == 8){
x = 0
imageNumber.append(tempArr)
tempArr.removeAll()
}


}

for z in 0...readings.count{
for r in 0...8 {
print(imageNumber[z][r])
}
}



} catch let error as NSError{
print("Error: \(error)")
}

}
}

最佳答案

你像这样分配你的数组:

var tempArr = [Double]()

这只是创建一个数组,但没有分配存储空间。如果您尝试使用元素索引访问数组,则您正在尝试访问未分配的内存。

如果你必须预先分配数组,你可以这样做:

让 tmpArray = [Double](count: 8, repeatedValue: 0.0)

最好只使用 Array 的 append 方法来添加你的元素。

您可能希望解决您的代码的其他一些问题。你盲目地假设数字是有效的:

设 number = Double(readings[i])

考虑使用 if let numberguard let number 并正确处理无效数据。

您还应该考虑将 8 分配给一个常量,因为您在代码中多次使用这个魔数(Magic Number)。

希望这对您有所帮助!

关于swift - 有人可以确定为什么我的索引超出范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com