2010-08-31 67 views

回答

6

遍歷數組並計算你正在尋找的東西。

假設你有填充NSNumber秒的NSArray

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

聲明一個計數器,將其設置爲0,循環遍歷數組,如果元素爲0,則遞增計數器。

+0

打我45s - 但我貼的代碼:) – 2010-08-31 23:16:03

4

有點變態的解決方案:)

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

我喜歡它。我想用它來混淆我的同事們的想法。 – 2010-09-01 00:00:07

9

根據您的應用程序,你可能會考慮使用NSCountedSet

當需要獲取特定類型對象的計數時,可以使用countForObject:instance方法。

對於您目前的問題,可能有點過重,但可能對尋求類似解決方案的其他人有用。

+5

這正是NSCountedSet的用途。你可以用'[[NSCountedSet alloc] initWithArray:array]'從一個數組中創建一個' - 然後你可以問它數組中的任何對象的數量。 – Chuck 2010-08-31 23:32:45

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

NSUInteger arrayWithValue = 0; 

for (NSNumber* number in array) 

{ 

if ([number intValue] == NUMBERYOUARELOOKINGFOR) 

    { 
     count++; 
    } 
} 
+0

謝謝戴夫!我錯過了 :/ – OOProg 2010-09-01 21:40:16

4

KeyValueCoding

int count = [array count] - [[array valueForKeyPath:@"@sum.intValue"] intValue]; 
0
NSArray *arrayWithOnesAndZeros = @[@0, @0, @1, @1, @0, @1, @1, @0, @1]; 
NSUInteger numberOfZeros = [[NSCountedSet setWithArray:arrayWithOnesAndZeros]countForObject:@0]; 

這是你在運行一個完美的方法,知道得很少,你要計算的對象,所以不是@0你可以把anyKindOfObjectWithUnknownValueOrType有代替。

相關問題