gpt4 book ai didi

ios - 从自定义对象数组 Swift 中删除重复项

转载 作者:IT王子 更新时间:2023-10-29 05:24:51 24 4
gpt4 key购买 nike

我有一个定义如下的自定义类:

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。我已经看到一些使用 NSMutableArrayEquatable 的解决方案,但是我不确定如何在此处调整它们;我也知道 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com