Ios 如何从使用结构创建的数组中附加项?

Ios 如何从使用结构创建的数组中附加项?,ios,arrays,swift4,Ios,Arrays,Swift4,我在ios中有一个表,我希望从一个数组中选择的项附加到另一个数组中,但是当我尝试时,我得到了错误无法用'IndexPath'类型的索引为'[VintageThings]'类型的值下标。 这是我的代码,它给了我一个错误,我试着查找如何做到这一点,但所有的答案似乎都与单层数组有关,如array=[“dog”,“cat”]等。请帮我解决这个问题 var selected: [VintageThings] = [] func tableView(tableView: UITableView, didS

我在ios中有一个表,我希望从一个数组中选择的项附加到另一个数组中,但是当我尝试时,我得到了错误
无法用'IndexPath'类型的索引为'[VintageThings]'类型的值下标。

这是我的代码,它给了我一个错误,我试着查找如何做到这一点,但所有的答案似乎都与单层数组有关,如
array=[“dog”,“cat”]
等。请帮我解决这个问题

var selected: [VintageThings] = []

func tableView(tableView: UITableView, didSelectRowAt IndexPath: IndexPath) {
   selected.append(newArray[indexPath])
}
编辑


如何使
选定的
数组锁定多个场景中的项目并在以后的场景中可用?我必须在外部swift文件中设置数组吗?我无法判断项目是否保存到其中。

IndexPath由两个索引组成。您需要的是
indexPath.row
。 这是因为TableView也可以划分为多个部分。如果用户点击给定部分中的某个项目,您会想知道是哪一个。这就是为什么IndexPath有第二个索引
IndexPath.section

要从数组中再次删除它,必须使用相同的方法(一种切换行为)


将其更新为indexPath.row以使其正常工作。这里更新了代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selected.append(newArray[indexPath.row])
}

编辑

要从阵列中删除对象,可以首先检查对象是否存在于选定阵列中。如果是,则检查对象的索引并从中删除该对象。这就是如何做到的

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let selectedObj = newArray[indexPath.row]
    if selected.contains(selectedObj) {
        if let indexOfSelectedObject = selected.index(of: selectedObj) {
            selected.remove(at: indexOfSelectedObject)
        }
    }
}

selected.append(newArray[indepath.row])
?参数的第一个字符是'indepath',而不是'indepath',因此,selected.append(newArray[indepath.row])啊,当然了。非常感谢。我如何使它,如果我取消选择它,它会从数组中删除,请?非常感谢!我如何使它,如果我取消选择它,它会被从数组中删除?你说的取消选择是什么意思?就像在一个购物车类型的数组中,当我点击该项目进入数组时,是否有一个函数可以删除它?你可以再次点击它来删除它。这需要您以某种方式标记所选的TableViewCell。谢谢@Bhavin!如何使其在取消选择时从阵列中移除?
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let selectedObj = newArray[indexPath.row]
    if selected.contains(selectedObj) {
        if let indexOfSelectedObject = selected.index(of: selectedObj) {
            selected.remove(at: indexOfSelectedObject)
        }
    }
}