问题描述
我创建了一个Swift数组,其中包含自定义数据类型的两个实例的集合:
I've created a Swift array that contains collections of two instances of a custom data type:
var myArray : [(MyDataType, MyDataType)]!
当我想向该数组添加项目时,使用以下代码(其中firstVar
和secondVar
是MyDataType
的实例)这样做很简单
When I want to add items to this array, it's trivial to do so with the following code (where firstVar
and secondVar
are instances of MyDataType
)
myArray.append((firstVar, secondVar))
我目前正在努力的是从myArray
中删除项目.使用此代码,我得到一个错误Value of type '[(MyDataType, MyDataType)]' has no member 'indexOf'
:
What I'm currently struggling with is removing items from myArray
. Using this code, I get an error of Value of type '[(MyDataType, MyDataType)]' has no member 'indexOf'
:
let indexOfA = myArray.indexOf((firstVar, secondVar))
myArray.remove(at: indexOfA)
老实说有些困惑,所以任何有关如何获取(MyDataType, MyDataType)
项索引的帮助都将非常有帮助!
Honestly somewhat confused, so any help as to how to get the index of an item of (MyDataType, MyDataType)
so that I can then remove it from myArray
would be extremely helpful!
推荐答案
您可以使MyDataType符合Equatable,并使用index(where :)方法查找元组(也符合Equatable):
You can make your MyDataType conform to Equatable and use index(where:) method to find your tuple (which conforms also to Equatable):
Swift 4.1 利用建议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)
}
这篇关于从Swift数组中移除自定义类型的集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!