我创建了一个 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/