gpt4 book ai didi

ios - 为什么我会收到此错误 : fatal error - array index out of range?

转载 作者:行者123 更新时间:2023-11-28 06:52:15 25 4
gpt4 key购买 nike

我有 2 个 View Controller :一个 cameraVC和一个 detailVC .相机是AVFoundation可以捕捉然后选择图片的相机,然后填充 4 个小 imageViews在我的 detailVC .我试图在两个 VC 之间滑动,这样当你在 cameraVC 上点击'yes' 时,然后将其添加到 4 imageViews 之一.我目前正在使用 for 循环来实现这一点,下面是我的详细 VC 中的代码。

它在我第一次加载应用程序并拍了几张照片时有效,但当我滑回我的 cameraVC 时然后回到我的detailVC ,应用程序崩溃并记录上面的错误。

在我的代码中,我尝试设置 imageViewArray不管我的 imageArray 里有多少图片.然后每次我回到detailVC ,我要清除我的 imageView.images并重新分配它们。由于某种原因,它不起作用。有什么想法吗?

override func viewWillAppear(animated: Bool) {
if imageArray.count == 1 {
imageViewArray += [imageView1]
} else if imageArray.count == 2 {
imageViewArray += [imageView1,imageView2]
} else if imageArray.count == 3 {
imageViewArray += [imageView1,imageView2,imageView3]
} else if imageArray.count == 4 {
imageViewArray += [imageView1,imageView2,imageView3,imageView4]
}

for ima in imageViewArray {
if ima.image != nil {
ima.image = nil
}
}

for (index, imageView) in imageViewArray.enumerate() {
imageView.image = imageArray[index]
}
}

最佳答案

添加行

imageViewArray = []

在您的 viewWillAppear 的开头。

或者将您对所有 4 个分支中的 imageViewArray 的分配更改为如下内容:

imageViewArray = [imageView1,imageView2,imageView3,imageView4] // removed the "+"

您在这里遇到的问题是,当 View 第一次呈现时以及某些呈现的 View 再次被关闭/弹出导致您的 View 再次出现时,该方法被调用。

结果是 imageViewArray 仍然包含上次迭代的 ImageView 。再次添加图像会导致数组变大。

假设第一次有 3 张图片,现在第二次有 4 张图片。因此,您进入最后一个 else 部分并向数组添加 4 个新元素,导致它有 7 个元素,而 imageArray 仍然只有 4 个。现在您遍历所有 imageViewArray 条目并尝试访问 imageArray 最多索引 6,而数组仅包含索引 3 之前的值 -> 崩溃

请注意,写这个答案很烦人,因为你有太多听起来和看起来都一样的变量 imageViewimageimageArray , imageViewArray, ima, imageViewX.请尝试找到更好的名称。

关于ios - 为什么我会收到此错误 : fatal error - array index out of range?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com