我有一个填充了0和1的NSArray。如何返回数组中0的数量?
谢谢!
答案 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}}。