我有一个包含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循环中,我打印出了index
,看起来当index
为0
时会发生崩溃。在同一个循环中,views.count
和photos.count
都返回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版本后唯一的变化在于suffix
和enumerate
方法。
这看起来像是一个Swift 2.0的bug还是我做错了什么呢? 源代码链接
我得出的解决方案:
let photos = Array(images.suffix(4))
应该与Swift 1.2
中的suffix()
函数完全相同