gpt4 book ai didi

ios - SwiftUI - 从数组中删除项目导致 fatal error : Index out of Range

转载 作者:行者123 更新时间:2023-12-01 21:48:07 29 4
gpt4 key购买 nike

我是 SwiftUI 的新手,我正在尝试构建一个 Image-Gallery,您可以在其中删除图像:

我的代码部分工作,当有更多元素时,我唯一无法删除的元素是最后一个。

奇怪的事情:当我只有一个元素时,我可以在一个 View 中删除它,而在另一个 View 中它会导致索引超出范围错误

这是我的代码

struct ImageSlider: View {
@Binding var images: [DefectImage]
@Binding var imagesTitels: [String]
@Binding var edit: Bool

var body: some View {
ScrollView(.horizontal) {
HStack {
if self.images.count > 0 {
ForEach(self.images) { img in
VStack {
if !self.edit {
DefImage(url: "", image: img.image)
Text(self.imagesTitels[self.getIdOfImg(img: img)])
.frame(width: 135)
}
else {
Button(action: {
self.imagesTitels.remove(at: self.getIdOfImg(img: img))
self.images.remove(at: self.getIdOfImg(img: img))
}){
DefEditImage(url: "", image: img.image)
}
.buttonStyle(PlainButtonStyle())

VStack {
TextField("", text: self.$imagesTitels[self.getIdOfImg(img: img)])
.frame(width: 135)
.offset(y: 6)
Rectangle()
.frame(width: 135, height: 1.0, alignment: .bottom)
.foregroundColor(Color.gray)
}
}
}
}
}
}
}
}



func getIdOfImg(img: DefectImage) -> Int {
var countId: Int = 0
for item in self.images {
if img.id == item.id {
return countId
}

countId += 1
}

return -1
}

错误:
Fatal error: Index out of range: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1103.2.25.8/swift/stdlib/public/core/ContiguousArrayBuffer.swift, line 444

错误不在数组之一中:
Screenshot of Error

最佳答案

为什么不尝试更改函数 getIdOfImg。
不使用 for 循环,而是使用

func getIdOfImg(img: String) -> Int {
if let index = self.images.firstIndex(of: img) {
return index
} else {
return -1
}
}

并且还重写了 block
Button(action: {
self.imagesTitels.remove(at: self.getIdOfImg(img: img))
self.images.remove(at: self.getIdOfImg(img: img))
})


Button(action: {
let index = self.getIdOfImg(img: img)
if index > 0 && index < self.images.count {
self.imagesTitels.remove(at: index)
self.images.remove(at: index)
}
})

关于ios - SwiftUI - 从数组中删除项目导致 fatal error : Index out of Range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932245/

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