NSMutableArray包含对象

时间:2012-01-18 03:54:36

标签: objective-c nsmutablearray

我必须检查NSMutableArray是否多次包含一个对象(例如,数组包含1,2,3,1,4),我想知道数组中有多少次1。我知道containsObject:但是如何使用它来进行这种检查?

3 个答案:

答案 0 :(得分:1)

答案 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,其中包含该键在该原始中存在的次数。