非空数组,访问第一个元素:索引超出范围 (Swift 2.0)

Non empty array, accessing first element: index out of range (Swift 2.0)

我有一个包含 4 个 UIImageVIew 的数组和一个大小可变的图像数组:[UIImage]

我想遍历视图数组并为每个视图分配最后 4 张图像。

let photos = images.suffix(4)
for (index, view) in views.enumerate() {
  if index <= photos.count - 1 {
    view.image = photos[index]
  } else {
    view.image = nil
  }
}

如果 images 中的元素不超过 4 个,代码将完美运行。然后我崩溃了:fatal error: ArraySlice index out of range.

我在 for-loop 中打印了 index,当索引为 0 时似乎发生了崩溃。 views.countphotos.count return 4 在同一个循环中。

因此,我在访问非空数组的第一个 0 元素时出错。

在 Swift 1.2 中,此代码完美运行:

let photos = suffix(images, 4)
for (index, view) in enumerate(views) {
  if index <= photos.count - 1 {
    view.image = photos[index]
  } else {
    view.image = nil
  }
}

切换到 2.0 后的唯一变化是 suffixenumerate 方法。

它看起来像 Swift 2.0 错误还是我做错了什么? Link to source file

我已经完成的解决方案:

let photos = Array(images.suffix(4))

应该与 Swift 1.2

中的 suffix() 功能完全一样

这是由于最近对 ArraySlice 进行了更改。现在 ArraySlice 的索引不是从零开始的。例如,如果 images.count == 10,则 images.suffix(4).startIndex == 5。请参阅发行说明 here,并搜索 “为了通用代码的一致性和更好的组合”