我想将一个2D数组中的元素追加到另一个2D数组中,但是我得到了致命错误索引。
代码如下:
var array = [["a", "b", "c"], ["d","e","f"],["g","h","i"]]
var array2 = [[String]]()
var x = array.count
var y = array[1].count
for j in 0..<x {
for i in 0..<y {
array2[j].append(array[j][i])
}
}
print(array2)
请不要告诉我只复制数组,因为这不是我所需要的,我正在使用此过程来做比仅复制数组还要复杂的事情。
关于它为何超出范围的任何建议?
谢谢
答案 0 :(得分:1)
array2[j]
不存在,因为它只是一个空数组。
这样做会容易得多:
var array = [["a", "b", "c"], ["d","e","f"],["g","h","i"]]
var array2 = [[String]]()
for item in array {
array2.append(item)
}
print(array2)
[[[“ a”,“ b”,“ c”],[“ d”,“ e”,“ f”],[“ g”,“ h”,“ i”]]
但这只是复制数组。您应该提供一个更精确的示例,说明您要实现的目标。
另一种选择(这可以使您当前的代码起作用)是在第一个循环中创建一个“行”以供插入:
var array = [["a", "b", "c"], ["d","e","f"],["g","h","i"]]
var array2 = [[String]]()
var x = array.count
var y = array[1].count
for j in 0..<x {
array2.append([String]())
for i in 0..<y {
array2[j].append(array[j][i])
}
}
print(array2)
哪个给出相同的输出:
[[[“ a”,“ b”,“ c”],[“ d”,“ e”,“ f”],[“ g”,“ h”,“ i”]]
答案 1 :(得分:0)
由于array2[0]
不存在,因此超出了范围。您需要在此处创建一个空数组,然后再附加到该数组。然后将该数组附加到外部数组。
var array = [["a", "b", "c"], ["d","e","f"],["g","h","i"]]
var array2 = [[String]]()
for j in 0..<array.count {
var stringArray: [String] = []
for i in 0..<array[j].count {
stringArray.append(array[j][i])
}
array2.append(stringArray)
}
print(array2)