为什么这个遍历数组的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 数组的限制。它会抛出这个异常
如果您的索引范围是 0
到 10
您有 11
个元素。您的循环将尝试访问超出范围的 11
索引。因此,如果您没有访问索引 0
处的第一个元素,请尝试从 i
中减去 1
。否则只需从 array.count
.
中减去 1
哪一个起作用取决于 i
在您访问数组之前是否增加。
所以对于索引为0
到10
的数组,
您正在尝试访问 1
到 11
、
或尝试访问 0
到 11
.
减去 1
修复了 1
到 11
的问题
(这是我怀疑正在发生的事情)。
从 array.count
中减去 1
修复了 0
到 11
的问题
还有一种更简单的方法是使用 for-in-loop。
没时间post我下班后代码会回来查看
我一直从这个看似明显的 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 数组的限制。它会抛出这个异常
如果您的索引范围是 0
到 10
您有 11
个元素。您的循环将尝试访问超出范围的 11
索引。因此,如果您没有访问索引 0
处的第一个元素,请尝试从 i
中减去 1
。否则只需从 array.count
.
1
哪一个起作用取决于 i
在您访问数组之前是否增加。
所以对于索引为0
到10
的数组,
您正在尝试访问 1
到 11
、
或尝试访问 0
到 11
.
减去 1
修复了 1
到 11
的问题
(这是我怀疑正在发生的事情)。
从 array.count
中减去 1
修复了 0
到 11
的问题
还有一种更简单的方法是使用 for-in-loop。
没时间post我下班后代码会回来查看