从 Swift 数组中删除自定义类型的集合

Removing a collection of custom types from a Swift Array

我创建了一个 Swift 数组,其中包含自定义数据类型的两个实例的集合:

var myArray : [(MyDataType, MyDataType)]!

当我想向这个数组中添加项目时,使用以下代码很简单(其中 firstVarsecondVarMyDataType 的实例)

myArray.append((firstVar, secondVar))

我目前正在努力解决的问题是从 myArray 中删除项目。使用此代码,我得到 Value of type '[(MyDataType, MyDataType)]' has no member 'indexOf':

的错误
    let indexOfA = myArray.indexOf((firstVar, secondVar))

    myArray.remove(at: indexOfA)

老实说有点困惑,所以任何关于如何获取 (MyDataType, MyDataType) 的项目的索引以便我可以将其从 myArray 中删除的帮助都将非常有帮助!

您可以使您的 MyDataType 符合 Equatable 并使用 index(where:) 方法来查找您的元组(它也符合 Equatable):

Swift 4.1趁着proposal se-0185

struct MyDataType: Equatable {
    let id: Int
}

var array : [(MyDataType,MyDataType)] = []

let tuple = (MyDataType(id: 1), MyDataType(id: 2))
array.append(tuple)

if let index = array.index(where: { [=11=] == tuple }) {
    array.remove(at: index)
}