似乎您可以使用 NSCountedSet。如果“apple”和“apple”相等,您将能够知道计数集中有多少个“水果”以及该集中有多少个“苹果”。
苹果的文档:
NSCountedSet 类声明了一个可变的、无序的模糊对象集合的编程接口。计数集也称为袋子。
每个插入到 NSCountedSet 对象中的不同对象都有一个与之关联的计数器。NSCountedSet 跟踪对象插入的次数,并要求删除对象的次数相同。因此,即使对象已多次添加到集合中,NSSet 对象中也只有一个对象实例。超类NSSet定义的count方法具有特殊意义;它返回不同对象的数量,而不是对象在集合中表示的总次数。NSSet 和 NSMutableSet 类分别用于元素不同的静态和动态集。
更新
这是一个例子:
NSCountedSet * fruits = [[NSCountedSet alloc] initWithArray:@[@"apple", @"apple", @"banana", @"apple", @"pear", @"banana"]];
NSLog(@"fruit count = %d", [fruits count]);
NSLog(@"num apples = %d", [fruits countForObject:@"apple"]);
NSLog(@"num bananas = %d", [fruits countForObject:@"banana"]);
NSLog(@"num pears = %d", [fruits countForObject:@"pear"]);
NSLog(@"num oranges = %d", [fruits countForObject:@"orange"]);
这将输出:
2013-02-02 13:07:59.058 test[46614:c07] fruit count = 3
2013-02-02 13:07:59.059 test[46614:c07] num apples = 3
2013-02-02 13:07:59.062 test[46614:c07] num bananas = 2
2013-02-02 13:07:59.062 test[46614:c07] num pears = 1
2013-02-02 13:07:59.063 test[46614:c07] num oranges = 0