arrays - 2D 数组 Swift 在追加数组时越界
问题描述
我想将一个二维数组中的元素附加到另一个二维数组,但我得到致命错误索引超出范围。
代码如下:
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)
请不要告诉我只复制数组,因为这不是我需要的,我正在使用此过程做一些比复制数组更复杂的事情。
关于为什么它超出范围的任何建议?
谢谢
解决方案
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”]]
推荐阅读
- c++ - 标记和语法
- javascript - 如何在 Fabric 中为线条绘制设置动画
- java - java netty消息编码器/解码器无响应
- c++ - 嵌套地图结构创建空地图
- javascript - JavascriptExecutor:无法读取 null 的属性“removeAttribute”
- php - 使用 php Reflection API 制作动态的 getter 和 setter
- mysql - MySQL 外键和外部参照表
- azure-cosmosdb - 宇宙设计问题
- angular - 没有将“exportAs”设置为“ngForm”的指令 - 是的,我看过其他帖子
- youtube-data-api - Youtube API v3 从给定频道获取每个视频 ID