iOS Swift:将数组过滤为唯一的项目

我有一个看起来像这样的数组:

let records = [ ["created": NSDate(timeIntervalSince1970: 1422600000), "type": 0], ["created": NSDate(timeIntervalSince1970: 1422600000), "type": 0], ["created": NSDate(timeIntervalSince1970: 1422600000), "type": 1], ["created": NSDate(timeIntervalSince1970: 1422600000), "type": 1], ["created": NSDate(timeIntervalSince1970: 1422700000), "type": 2], ["created": NSDate(timeIntervalSince1970: 1422700000), "type": 2], ] 

如何将数组过滤为仅包含唯一类型的记录?

尝试:

 var seenType:[Int:Bool] = [:] let result = records.filter { seenType.updateValue(false, forKey: $0["type"] as Int) ?? true } 

基本上这段代码是以下的快捷方式:

 let result = records.filter { element in let type = element["type"] as Int // .updateValue(false, forKey:) let retValue:Bool? = seenType[type] seenType[type] = false // ?? true if retValue != nil { return retValue! } else { return true } } 

如果密钥存在,则Dictionary updateValue返回旧值 ,如果是新密钥,则返回nil

必须有一个更迅速的方法来做到这一点,但它的工作原理。

 var unique = [Int: AnyObject]() for record in records { if let type = record["type"] as? Int { unique[type] = record } } 

在此处输入图像描述