我创建了一个Swift数组,其中包含两个自定义数据类型实例的集合:
var myArray : [(MyDataType, MyDataType)]!
当我想向此数组添加项目时,使用以下代码(其中firstVar
和secondVar
是MyDataType
的实例)
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
中删除,这将非常有帮助!
答案 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)
}