为什么这个遍历数组的for循环会抛出异常呢?

Why does this for loop that iterates an array throw an exception?

我一直从这个看似明显的 for 循环中返回错误。

for var i = 0; i < self.restaurantNames.count; i++ {
    self.names += [Name(name: self.restaurantNames[i], city: self.addressCity[i])]
}

错误

fatal error: Array index out of range

检查 self.addressCity array 的大小。数组的大小可以小于 self.restaurantNames array。一旦 i 变量将越过 addressCity 数组的限制。它会抛出这个异常

如果您的索引范围是 010 您有 11 个元素。您的循环将尝试访问超出范围的 11 索引。因此,如果您没有访问索引 0 处的第一个元素,请尝试从 i 中减去 1。否则只需从 array.count.

中减去 1

哪一个起作用取决于 i 在您访问数组之前是否增加。

所以对于索引为010的数组,
您正在尝试访问 111
或尝试访问 011.

减去 1 修复了 111 的问题 (这是我怀疑正在发生的事情)。
array.count 中减去 1 修复了 011 的问题

还有一种更简单的方法是使用 for-in-loop

没时间post我下班后代码会回来查看