gpt4 book ai didi

ios - 如何在 Swift 中仅从数组中删除选定的索引路径?

转载 作者:行者123 更新时间:2023-11-28 19:54:51 26 4
gpt4 key购买 nike

我有一个可变数组:

var responseArray = ["yes", "no", "no way", "of course", "for sure", "not a chance", "positively"]

responseArray 是我的 TableView 的数据源,它允许在编辑期间进行多项选择。

我正在捕获选定的索引路径:

let paths = tableView.indexPathsForSelectedRows()

我可以通过运行 println(paths) 返回并验证我的 tableView 的每个选定的 indexPath

我已阅读有关 indexPathsForSelectedRows 方法的文档,并了解它会返回我按行排序的索引路径数组。

我无法理解的是如何使用返回的索引路径数组从 responseArray 中删除 TableView 中选择删除的每一行的数据。

在阅读了一些文档之后,我是否认为我无法从 `responseArray' 中删除任何数据,因为我正在枚举它?例如:

@IBAction func deleteButtonPressed(sender: AnyObject) {
if responseArray.count > 0 {
if let paths = self.tableView.indexPathsForSelectedRows() {
var sortedArray = paths.sorted({$0.row < $1.row})
// Remove index paths from responseArray
for i in sortedArray {
responseArray.removeAtIndex(i.row)
}
self.tableView.reloadData()
}
}
}

我能够从 TableView 中逐行删除每一行,但是当我选择第一行和最后一行、所有行或任何其他行组合进行删除时,我会收到 fatal error :数组索引超出范围。但是,如果我选择两个相邻的行进行删除,则会获得所需的结果,并且这两行将从 TableView 中删除。

我知道我缺少某些东西,但作为一名新程序员,我已经三天无法解决这个问题了。我做错了什么?

最佳答案

这是你的数组:[ A, B, C, D ]

假设您要分别删除索引 0 和 3 处的 A 和 D,一次删除一个:

deleteAtIndex(0) 给出:[ B, C, D ]

deleteAtIndex(3) 给出:越界异常

编辑:好的,为了避免使事情复杂化,为什么不总是首先删除最高索引 通过反转排序:{$1.row < $0.row}

关于ios - 如何在 Swift 中仅从数组中删除选定的索引路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084746/

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