代码之家  ›  专栏  ›  技术社区  ›  Jonah

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

  •  2
  • Jonah  · 技术社区  · 14 年前

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

    谢谢!

    7 回复  |  直到 14 年前
        1
  •  6
  •   Shaggy Frog    14 年前

    遍历数组并计算要查找的内容。

    假设你有一个 NSArray 充满 NSNumber

    NSArray* array = ... ; // populate array
    NSUInteger count = 0;
    for (NSNumber* number in array)
    {
        if ([number intValue] == 0)
        {
            count++;
        }
    }
    
        2
  •  9
  •   Reed Olsen    14 年前

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

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

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

        3
  •  4
  •   Vadim Shender    14 年前

    有点反常的解决方法:)

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

    int count = [array count] - [[array valueForKeyPath:@"@sum.intValue"] intValue];
    
        5
  •  1
  •   Lou Franco    14 年前

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

        6
  •  0
  •   Dave DeLong    14 年前
    NSArray* array = [[NSArray alloc] ...]; ; // put data into the array
    
    NSUInteger arrayWithValue = 0;
    
    for (NSNumber* number in array)
    
    {
    
    if ([number intValue] == NUMBERYOUARELOOKINGFOR)
    
        {
            count++;
        }
    }
    
        7
  •  0
  •   turingtested    9 年前
    NSArray *arrayWithOnesAndZeros = @[@0, @0, @1, @1, @0, @1, @1, @0, @1];
    NSUInteger numberOfZeros = [[NSCountedSet setWithArray:arrayWithOnesAndZeros]countForObject:@0];
    

    这是一个完美的方法,你在运行时知道很少的对象,你想计数,所以,而不是 @0 anyKindOfObjectWithUnknownValueOrType 而是那里。