我有一个定义如下的自定义类:
class DisplayMessage : NSObject {
var id : String?
var partner_image : UIImage?
var partner_name : String?
var last_message : String?
var date : NSDate?
}
现在我有一个数组 myChats = [DisplayMessage]?
。 id
字段对于每个 DisplayMessage
对象都是唯一的。我需要检查我的数组并从中删除所有重复项,基本上确保数组中的所有对象都具有唯一的 id
。我已经看到一些使用 NSMutableArray
和 Equatable
的解决方案,但是我不确定如何在此处调整它们;我也知道 Array(Set(myChats))
但这似乎不适用于自定义对象数组。
最佳答案
这是一个数组扩展,用于返回基于给定键的唯一对象列表:
extension Array {
func unique<T:Hashable>(map: ((Element) -> (T))) -> [Element] {
var set = Set<T>() //the unique list kept in a Set for fast retrieval
var arrayOrdered = [Element]() //keeping the unique list of elements but ordered
for value in self {
if !set.contains(map(value)) {
set.insert(map(value))
arrayOrdered.append(value)
}
}
return arrayOrdered
}
}
对于你的例子做:
let uniqueMessages = messages.unique{$0.id ?? ""}
关于ios - 从自定义对象数组 Swift 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39307188/