如何从数组数组中获取值

时间:2015-10-12 16:29:43

标签: swift dynamic-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()
}

但我在行fatal error: Array index out of range

中得到if let object = grid[x][y] {

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

首先,如果您希望修改grid对象,则无法使用let进行定义。您必须使用var

看起来您正在尝试将可选绑定(if let x = Optional(y) { ... })与数组下标(array[x])一起使用。这不起作用,因为数组下标不返回可选项。它将返回一个有效的对象或抛出异常。你可以试试这个:

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