您好我想将1D数组的值存储到2D数组中。 我的1D数组有50个元素,我想将它存储在5x10数组中,但每当我这样做时,它总是给我一个“索引超出范围”的错误 任何帮助将不胜感激!
var info2d = [[String]]()
var dataArray = outputdata.components(separatedBy: ";")
for j in 0...10 {
for i in 0...5 {
info2d[i][j] = dataArray[(j)*5+i]
print(info2d[i][j])
}
}
答案 0 :(得分:1)
代码中有很多错误。
在使用索引之前,必须使用默认值初始化 info2d
// initialising 2d array with empty string value
var info2d = [[String]](repeating: [String](repeating: "", count: 10), count: 5)
其次for
循环...
也包含最后一个值,使用..<
for j in 0..<10 {
//...
}
第三,(j)*5+i
也是错误的。
更好阅读如何在swift中使用数组,集合和for循环。
https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html
https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html
答案 1 :(得分:1)
我会为此使用ArraySlice。
var arr2D = [[String]]()
for i in 0..<5 {
let start = i * 10
let end = start + 10
let slice = dataArray[start..<end] //Create an ArraySlice
arr2D.append(Array(slice)) //Create new Array from ArraySlice
}