我想从数组中删除自定义类型值的元素。
我想传递一个变量实例来将其从数组中删除,我不想使用removeAtIndex()。
var favoriteVariants: [Variant]
func removeVariant(variant: Variant)
{
}
答案 0 :(得分:0)
如果Variant
为Equatable
且您只想删除匹配的第一个:
if let idx = favoriteVariants.indexOf(variant) {
favoriteVariants.removeAtIndex(idx)
}
如果不是Equatable
,并且您还有其他一些匹配条件可以找到一个要删除的条件:
let idx = favoriteVariants.indexOf {
// match $0 to variant
}
if let idx = idx {
favoriteVariants.removeAtIndex(idx)
}
(这些假设是Swift 2.0 - 如果是1.2,它是find(favoriteVariants, variant)
而不是indexOf
,并且没有一个版本需要关闭,尽管write one并不难)
如果您想要一次删除多个:
favoriteVariants = favoriteVariants.filter {
// criteria to _keep_ any given favorite
}
如果您想做的事情足够通用以证明其合理性,那么所有这些都可以包含在扩展名中。