作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想从数组中删除自定义类型值的元素。
我想将一个变体实例传递给函数以将其从数组中删除,我不想使用 removeAtIndex()。
var favoriteVariants: [Variant]
func removeVariant(variant: Variant)
{
}
最佳答案
如果 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
}
如果您想做的事情足够通用以证明其合理性,那么所有这些都可以包含在扩展中。
关于ios - 如何从 Swift 中的数组中删除给定自定义类型值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181255/
我是一名优秀的程序员,十分优秀!