从Swift阵列中删除自定义类型的集合

时间:2018-04-16 23:04:26

标签: arrays swift indexing indexof

我创建了一个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中删除,这将非常有帮助!

1 个答案:

答案 0 :(得分:2)

您可以使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: { $0 == tuple }) {
    array.remove(at: index)
}