我创建了一个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
中删除它的帮助都是非常有帮助的! 最佳答案
您可以使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/