一尘不染

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

swift

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

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))但这似乎不适用于自定义对象数组。


阅读 258

收藏
2020-07-07

共1个答案

一尘不染

您可以使用一组字符串来完成此操作,如下所示:

var seen = Set<String>()
var unique = [DisplayMessage]
for message in messagesWithDuplicates {
    if !seen.contains(message.id!) {
        unique.append(message)
        seen.insert(message.id!)
    }
}

想法是保留一组到目前为止我们已经看到的所有ID,循环遍历所有项目,然后添加那些我们尚未看到的ID。

2020-07-07