我现在有两个视图控制器。第一个是负责拍照的AVCaputureSession。我要做的是为我拍摄的每一张照片选择“是”选项,将该图像添加到我的“imageArray”并填充第二个视图控制器,该控制器包含4个小的image view。
下面的代码是我的第二个视图控制器的代码,我试图通过我的imageArray循环并将图像设置为这样的imageViews。它将崩溃,并出现以下错误:
致命错误:数组索引超出范围。
我不知道有没有更好的办法?
if imageArray.count != 0 {
for im in 0..<imageArray.count {
imageViewArray[im].image = imageArray[im]
}
}
最佳答案
您崩溃是因为imageArray
中的图像比imageViewArray
中的图像视图多。使用这两个数组的min
值将防止代码崩溃,但您确实需要决定在图像多于ImageView的情况下,您希望应用程序执行的操作:
if imageArray.count != 0 {
for im in 0..<min(imageArray.count, imageViewArray.count) {
imageViewArray[im].image = imageArray[im]
}
}
如果要将imageViews初始化为
count
中的图像,或者如果imageArray
中没有足够的图像用于imageViews,则可以通过以下方式完成:for (index, imageView) in imageViewArray.enumerate() {
imageView.image = (index < imageArray.count) ? imageArray[index] : nil
}
关于ios - 如何有效填充imageViews而不会因错误而崩溃:数组索引超出范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34372541/