如何计算具有特定值的NSArray中的对象?

时间:2010-08-31 23:12:03

标签: cocoa nsarray

我有一个填充了0和1的NSArray。如何返回数组中0的数量?

谢谢!

7 个答案:

答案 0 :(得分:9)

根据您的应用程序,您可以考虑使用NSCountedSet

当需要获取某种类型对象的计数时,您可以使用countForObject:instance方法。

对于您当前的问题可能有点过于沉重,但对于寻求类似解决方案的其他人可能会有用。

答案 1 :(得分:6)

遍历数组并计算你正在寻找的东西。

假设您有一个NSArray填充了NSNumber s:

NSArray* array = ... ; // populate array
NSUInteger count = 0;
for (NSNumber* number in array)
{
    if ([number intValue] == 0)
    {
        count++;
    }
}

答案 2 :(得分:4)

一个有点变态的解决方案:)

NSUInteger zeros_count(NSArray *array) {
  NSUInteger sum = 0;
  for (NSNumber *number in array)
    sum += [number intValue];
  return [array count] - sum;
}

答案 3 :(得分:4)

KeyValueCoding

int count = [array count] - [[array valueForKeyPath:@"@sum.intValue"] intValue];

答案 4 :(得分:1)

声明一个计数器,将其设置为0,循环遍历数组,如果该元素为0,则递增计数器。

答案 5 :(得分:0)

NSArray* array = [[NSArray alloc] ...]; ; // put data into the array

NSUInteger arrayWithValue = 0;

for (NSNumber* number in array)

{

if ([number intValue] == NUMBERYOUARELOOKINGFOR)

    {
        count++;
    }
}

答案 6 :(得分:0)

NSArray *arrayWithOnesAndZeros = @[@0, @0, @1, @1, @0, @1, @1, @0, @1];
NSUInteger numberOfZeros = [[NSCountedSet setWithArray:arrayWithOnesAndZeros]countForObject:@0];

这是一个完美的方法,你在运行时几乎不知道你想要计算的对象,所以你可以将@0放在anyKindOfObjectWithUnknownValueOrType而不是{{1}}。