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

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

问题描述:

我有这个NSMutableArray,它包含一个Message对象。消息有几个属性,其中之一是TheID。根据对象的属性从NSMutableArray中移除重复项

因此,考虑到下列对象在我的数组:

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

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

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

我想摆脱重复TheIDs的。

什么是筛选我的阵列以这样的方式最好的方式,我结束了

我见过很多类似的问题消息1包含的消息2和(或消息2和消息3)一个数组,但没有的解决方案似乎适用于我的情况。

感谢

,你通过你的消息数组迭代你可以使用一个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]; 
    } 
} 
+0

谢谢。唯一的问题是TheID是一个i​​nt(而不是一个对象)。尽管我会使用另一个独特的属性。 – Sjakelien

+0

您可以使用该ID。在将它与NSSet一起使用之前,请将其包装在NSNumber中。 – rmaddy