我对Swift中的2D数组感到非常困惑.让我一步一步地描述.如果我错了,请你纠正我好吗.

首先空数组的声明:

class test{
    var my2Darr = Int[][]()
}

其次,填充array.(例如my2Darr[i][j] = 0,其中i,j代表循环变量)

class test {
    var my2Darr = Int[][]()
    init() {
        for(var i:Int=0;i<10;i++) {
            for(var j:Int=0;j<10;j++) {
                my2Darr[i][j]=18   /*  Is this correct?  */
            }
        }
    }
}

最后,编辑数组中的元素

class test {
    var my2Darr = Int[][]()
    init() {
        ....  //same as up code
    }
    func edit(number:Int,index:Int){
        my2Darr[index][index] = number
        // Is this correct? and What if index is bigger
        // than i or j... Can we control that like 
        if (my2Darr[i][j] == nil) { ...  }   */
    }
}

推荐答案

定义可变数组

// 2 dimensional array of arrays of Ints 
var arr = [[Int]]() 

或者:

// 2 dimensional array of arrays of Ints 
var arr: [[Int]] = [] 

或者,如果需要预定义大小的数组(如@0x7fffffff在注释中所述):

// 2 dimensional array of arrays of Ints set to 0. Arrays size is 10x5
var arr = Array(count: 3, repeatedValue: Array(count: 2, repeatedValue: 0))

// ...and for Swift 3+:
var arr = Array(repeating: Array(repeating: 0, count: 2), count: 3)

改变元素的位置

arr[0][1] = 18

let myVar = 18
arr[0][1] = myVar

更改子数组

arr[1] = [123, 456, 789] 

arr[0] += 234

arr[0] += [345, 678]

如果在这些更改之前有0(零)的3x2数组,那么现在有:

[
  [0, 0, 234, 345, 678], // 5 elements!
  [123, 456, 789],
  [0, 0]
]

所以请注意,子数组是可变的,您可以重新定义表示矩阵的初始array.

访问前判断大小/边界

let a = 0
let b = 1

if arr.count > a && arr[a].count > b {
    println(arr[a][b])
}

Remarks:

Swift相关问答推荐

限制文本字段中的字符数- Swift

如何为任务扩展的泛型静态函数获得自动类型推理

是否在字符串属性上搜索数组和子数组?

如何使用AsyncTimerSequence获取初始时钟,然后在指定的时间间隔内开始迭代?

KMM-Swift铸造密封类

在一行语句中比较Date.now的相等性是否安全

有条件地在同一视图上设置两个不同的过渡

对实例方法appendInterpolation的调用没有完全匹配

使用View()和List()无法显示影子

在 RealityKit 中查找特定模型的 findEntity(named:) 方法的替代方法?

如何在 SwiftUI 中创建条件内容?

TabView 无法在屏幕上正确显示

MainActor 隔离可变存储属性为何会出现可发送错误?

如何裁剪图像 3:4 ?迅速

iOS16 Bug 键盘在表单解雇 SwiftUI 时打破布局

Swift 非参与者隔离闭包

如何处理永远不会失败的 String.Encoding 初始化程序?

根据禁用与否更改 SwiftUI 中按钮的 colored颜色

使用 Swift 在 iOS 8 中为应用程序图标添加徽章

如何在 SwiftUI 中以编程方式滚动列表?