我必须检查NSMutableArray
是否多次包含一个对象(例如,数组包含1,2,3,1,4),我想知道数组中有多少次1。我知道containsObject:
但是如何使用它来进行这种检查?
答案 0 :(得分:1)
NSCountedSet
可能会有所帮助,因为您希望跟踪重复值的发生次数。
答案 1 :(得分:0)
快速的方法是将其转换为NSSet,然后再转换回数组。 NSSets不能包含重复项。或者,使用循环将值逐个复制到新数组中,每次在添加之前检查新数组是否包含对象的副本。
答案 2 :(得分:0)
这取决于你的对象类型,但如果它们可以用作NSDictionary的键,我会创建一个NSMutableDictionary,指向包含每个对象实例的计数的NSNumber对象。类似的东西:
NSArray *array = whatever;
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:array.count];
for ( id obj in array )
{
NSNumber *number = [d objectForKey:obj];
if ( number == nil )
{
[d setObject:[NSNumber numberWithInt:1] forKey:obj];
}
else
{
[d setObject:[NSNumber numberWithInt:([number intValue]+1) forKey:obj];
}
}
在此代码的末尾,您将看到一个NSDictionary,其中键是您的原始对象,值是NSNumbers,其中包含该键在该原始中存在的次数。