Objective c - NSMutableSet唯一对象属性

Eya*_*yal 18 iphone objective-c nsset nsmutableset

在我的应用我有一个类PersonpersonId属性.
现在我需要一些数据结构来保存一堆独特的Person对象(unique = different personId)

所以我想我应该使用NSMutableSet作为我的数据结构,但是如何personId在添加一个人时让NSMutableSet比较属性(所以我不会添加同一个人多一些)?

我的目标是始终拥有一组独特的人(即使我添加了两个具有相同ID的人),我希望NSMutableSet能为我做所有艰苦的工作,如果我正在添加一个已经存在的人它不会添加两次.

All*_*ian 34

你可以通过了解如何进行比较来实现这一目标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
}
Run Code Online (Sandbox Code Playgroud)