如何从数组的数组中获取值

How to get value from array of arrays

我的代码中有数组数组 grid。我想做的是检查 xy let object = grid[x][y] 是否有对象,如果 object 不是 nil 我编辑它,否则我分配一个新的反对 grid[x][y] = newObject().

if let object = grid[x][y] {
   object.property = newValue
} else {
   grid[x][y] = newObject()
}

但我在 if let object = grid[x][y] {

行中得到 fatal error: Array index out of range

最好的方法是什么? 提前致谢。

首先,如果你想修改你的 grid 对象,你不能用 let 定义它。您必须使用 var.

您似乎在尝试将可选绑定 (if let x = Optional(y) { ... }) 与数组下标 (array[x]) 结合使用。这是行不通的,因为数组下标不是 return 可选的。它会 return 一个有效的对象或抛出异常。你可以试试这个:

if grid.count > x {
  if grid[x].count > y {
    object = grid[x][y]
  }
}

你需要做的(正如我在评论中所说的那样)是将数组分配到你想要的大小,并使其成为 Object? 而不是 Object 的数组(或 Object! - 你为什么这样做?)。像这样,对于 2x2 数组 ...

var grid = [[Object?]](count:2, repeatedValue: [Object?](count:2, repeatedValue:nil))