在我的应用程序中,我有一个类 Person
具有 personId
属性。
现在我需要一些数据结构来保存一堆独特的 Person
对象(unique = different personId)
所以我想我应该使用 NSMutableSet 作为我的数据结构,但是我如何让 NSMutableSet 在添加一个人时比较 personId
属性(这样我就不会添加更多的同一个人) )?
我的目标是始终拥有一组独特的人(即使我添加了两个具有相同 ID 的人),我希望 NSMutableSet 会为我完成所有艰苦的工作,如果我要添加一个人已经存在,它不会添加两次。
最佳答案
您可以通过了解 NSSet
进行比较的方式来实现这一点。
当您向集合中添加新对象时,将针对集合的每个元素调用 isEqual:
方法(这是一个 NSObject
方法)。因此,您可以做的是覆盖此方法并提供如下自定义比较:
注意:
如果您覆盖isEqual:
方法,您必须同时覆盖hash
方法
// In your Person.m
- (BOOL)isEqual:(id)anObject
{
return [self.personId isEqual:anObject.personId];
// If it's an object. Otherwise use a simple comparison like self.personId == anObject.personId
}
- (NSUInteger)hash
{
return self.personId; //Must be a unique unsigned integer
}
关于iphone - Objective c - NSMutableSet 独特的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586218/