如何创建集合扩展以在具有属性的集合中查找唯一对象?
Posted
技术标签:
【中文标题】如何创建集合扩展以在具有属性的集合中查找唯一对象?【英文标题】:How to create Set Extension to find unique object in the set with property? 【发布时间】:2016-02-13 20:32:06 【问题描述】:查看了几个解决方案来查找 Array 中与结构中的字段匹配的第一个元素,这里: Find object with property in array 和这里:find object in array
仅在单个唯一匹配时才返回匹配:
var foundAction: SequenceAction?
let filteredActions = currentStatus.seqActionsList.filter($0.verb == actionCommand)
if filteredActions.count == 1
foundAction = filteredActions.first
继续使用这个 sn-p 但不知道如何添加为 Set 的扩展?
【问题讨论】:
【参考方案1】:Set 已经有一个indexOf
方法,可让您使用谓词搜索成员。你可以使用它:
let numberSet: Set = [2, 4, 6, 8, 10, 12, 13]
if let index = numberSet.indexOf( $0 % 2 == 1 )
print(numberSet[index])
else
print("No odd members found")
【讨论】:
谢谢,最后我扩展了Set【参考方案2】:为了记录,最终想通了:
extension Set
func findUniqueMatch(predicate: Element -> Bool) -> Element?
let filteredList = self.filter(predicate)
if filteredList.count == 1
return filteredList.first
return nil
【讨论】:
以上是关于如何创建集合扩展以在具有属性的集合中查找唯一对象?的主要内容,如果未能解决你的问题,请参考以下文章