如何将一维数组中的值存储到Swift 4中的二维数组中

时间:2018-06-16 08:46:26

标签: ios arrays swift

您好我想将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])

    }
}

2 个答案:

答案 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
}