根据对象的 属性 从 NSMutableArray 中删除重复项

Remove duplicates from NSMutableArray based on an object's property

我有这个 NSMutableArray,其中包含一个 Message 对象。消息有几个属性,其中之一是 TheID。

因此,请考虑我的数组中的以下对象:

Message1.TheID = 1
Message1.title = @"whatever"

Message2.TheID = 2
Message2.title = @"doesn't matter"

Message3.TheID = 1
Message3.title = @"I don't care"

我想删除重复的 TheID。

以这样的方式过滤我的数组的最佳方法是什么,我最终得到一个包含 Message1 和 Message2(或 Message2 和 Message3)的数组

我见过很多类似的问题,但是 none 的解决方案似乎适用于我的情况。

谢谢

您可以使用 NSSet 在遍历消息数组时跟踪使用的 ID。仅向其 id 不在集合中的新数组添加消息。

NSMutableSet *ids = [NSMutableSet set];
NSMutableArray *newMessages = [NSMutableArray array];
for (Message *message in messagesArray) {
    if (![ids containsObject:message.theID]) {
        [ids addObject:message.TheID];
        [newMessages addObject:message];
    }
}