如何从Swift中的数组中删除给定自定义类型值的元素

时间:2015-07-02 09:49:21

标签: ios arrays swift

我想从数组中删除自定义类型值的元素。

我想传递一个变量实例来将其从数组中删除,我不想使用removeAtIndex()。

var favoriteVariants: [Variant]

func removeVariant(variant: Variant)
{
}

1 个答案:

答案 0 :(得分:0)

如果VariantEquatable且您只想删除匹配的第一个:

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
}

如果您想做的事情足够通用以证明其合理性,那么所有这些都可以包含在扩展名中。