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

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

var favoriteVariants: [Variant]

func removeVariant(variant: Variant)
{
}

最佳答案

如果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
}

如果您想要做的足以证明其合理性,那么所有这些都可以包装在扩展中。

关于ios - 如何在Swift中从数组中删除给定自定义类型值的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31181255/

10-13 04:08