我创建了一个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: { $0 == tuple }) {
    array.remove(at: index)
}

关于arrays - 从Swift数组中移除自定义类型的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49867482/

10-09 01:42