sách gpt4 ai đã đi

Chỉ mục nằm ngoài phạm vi trong vòng lặp while cơ bản ios objective-c swift

In lại 作者:行者123 更新时间:2023-11-30 11:53:12 26 4
mua khóa gpt4 Nike

我正在解析 HTML 并重新格式化图像以使其更好地适应。由于某种原因,当我有多个图像需要解析时,我会超出范围,而且我一生都无法弄清楚为什么。

当 imgArray.count >1 时,我将使用带有递增计数器的标准 while 循环进行循环。

在一个示例中,imgArray 计数为 3,i 为 3,但我的循环超出了范围,尽管我可以看到 multImgArray 中直至 multImgArray[2] 的适当值

如您所见,我在数组位置中减 1 以保持计数整数和数组位置同步

  if image {
var imgArray = image.components(separatedBy: "style=")
imgArray.removeFirst() //to remove unused portion of html

var newImgArray = [String]()
var multImgArray = [[String]]()

if imgArray.isEmpty == false {
if imgArray.count == 1 {
newImgArray = imgArray[0].components(separatedBy: ">")
} khác {
var i = 0
while i < imgArray.count {
i+=1
multImgArray.append(imgArray[i-1].components(separatedBy: ">"))
}
}

biên tập:

原始 HTML 片段


循环之后,我应该将每个图像的原始片段放入数组中。但是循环超出了范围,就好像 Xcode 试图附加不存在的数组位置一样。

最终预期输出(替换此处未显示的步骤,但根据其他人的请求添加了澄清步骤):

//where max-width is defined elsewhere as self.view.frame.width - 50

1 Câu trả lời

如果您对空字符串有疑问 - 您可以在处理数组之前删除它们。例如,您可以使用一些扩展:

extension Array where Element == String {

func filterEmpty() -> [String] {
return filter({ !$0.isEmpty })
}
}

然后这样使用它:

let imgArray = image.components(separatedBy: "style=").filterEmpty()

另外,你的循环有点困惑。你可以在没有循环的情况下做到这一点。例如:

let image = "style=A>style=B>Bstyle=C>C"
var imgArray = image.components(separatedBy: "style=").filterEmpty()
var newImgArray = [String]()
var multImgArray = [[String]]()
switch imgArray.count {
case 2...:
multImgArray = imgArray.map({ $0.components(separatedBy: ">").filterEmpty() })
case 1:
newImgArray = imgArray[0].components(separatedBy: ">").filterEmpty()
mặc định:
phá vỡ
}

所以,它可能会解决循环问题。希望对您有帮助

附注或者甚至这样:

let image = "style=A>style=B>Bstyle=C>C"
let imgArray = image.nonEmptyComponents(separatedBy: "style=")
let newImgArray = imgArray.first?.nonEmptyComponents(separatedBy: ">") ?? []
let multImgArray = imgArray.map({ $0.nonEmptyComponents(separatedBy: ">") })

extension Array where Element == String {

func filterEmpty() -> [String] {
return filter({ !$0.isEmpty })
}
}

extension String {

func nonEmptyComponents(separatedBy string: String) -> [String] {
return components(separatedBy: string).filterEmpty()
}
}

关于ios - 基本 while 循环中索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48125427/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com