【发布时间】:2018-05-04 09:05:40
【问题描述】:
在 Swift 标准库中是否有一个函数作用于集合,接受一个谓词并返回从该集合中删除的值?
目前,我必须分两步实现它:
guard let idx = allAnnotations.index(where: {$0 is MKUserLocation}) else {return}
let userLocation = allAnnotations.remove(at: idx) as! MKUserLocation
但我猜,存在类似的功能。
目标
我有以下数组:
[Type1, Type1, Type1, Type1, Type1, Type1, Type2]
Type2 可能存在也可能不存在于数组中。除了这两种之外,没有其他类型。
我需要把它分成两个元素:
[Type1, Type1, Type1, Type1, Type1, Type1]
和
Type2?
这就是我要找的功能。
【问题讨论】:
-
听起来你在找
filter() -
如果多个元素与谓词匹配,会发生什么?目前您正在删除第一个。
-
@vikingosegundo true,过滤器已关闭。我已经更新了这个问题以进一步澄清它。
-
如果Type2有多个元素,Type3也有一些元素怎么办?
-
@PuneetSharma 是的,没关系。
Type2可能只有一个元素。特别是,我将[MKAnnotation]拆分为我的自定义注释和MKUserLocation注释的数组。
标签: arrays swift collections