从 Swift 数组中删除自定义类型的集合
Removing a collection of custom types from a Swift Array
我创建了一个 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: { [=11=] == tuple }) {
array.remove(at: index)
}
我创建了一个 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: { [=11=] == tuple }) {
array.remove(at: index)
}