将项目添加到数组时,您不需要担心这一点。只要你每次添加一个唯一的对象,对象的属性就不应该重要。
如果您担心这一点,并且想要加倍确定,请改用NSMutableSet(除非需要维护每个对象的顺序)。
更新
你可以使用谓词来检查具有相同值的对象,不添加它之前存在。这对NSMutableArray和NSMutableSet都可以正常工作。
//create array
NSMutableArray *array = [[NSMutableArray alloc] init];
//create person
Person *newPerson = [[Person alloc] init];
//add person
[array addObject:newPerson]
//check new object exists
if([[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"personID == %@", [newPerson personID]]] count] == 0)
{
//add object
[array addObject:newPerson];
}
非常粗糙的伪代码,但希望你得到的要点:)
感谢这就是我一直在寻找:) – Eyal
只是一件事,如果我的personId是NSString,我应该如何重写散列方法? – Eyal
只需将其转换为像下面这样的int:'[self.personId intValue]'。和你的比较使用:'[self.personId isEqualToString:anObject.personId]' – Alladinian