我现在有两个视图控制器。第一个是负责拍照的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/

10-09 08:53