2014-06-29 81 views
1

我有一個數組,我用下面的代碼中的布爾值填充。檢查整個布爾型的NSMutableArray

for(int i = 0; i < 15; i++){ 
    int checkVal = [(NSNumber *)[__diceValue objectAtIndex:i] intValue]; 
    if(checkVal == matchVal){ 
     [_diceMatch replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:y]]; 
    } 
} 

什麼是最短的方式來寫一個條件來檢查數組「_diceMatch」所有真正的值?

回答

2

如果陣列只能包含值「真」(@YES)或「假」(@NO) 那麼你可以簡單地檢查沒有@NO

if (![_diceMatch containsObject:@NO]) { 
    // all elements are "true" 
} 
0
NSUInteger numberOfTrueValues = 0; 

for (NSNumber *value in _diceMatch) { 
    if ([value boolValue]) { 
     numberOfTrueValues++; 
    } 
} 
-1

最短路?也許不會。最簡單的方法?當數組是空的,但第二個版本返回NO第一個版本返回YES:是

- (BOOL)isDictMatchAllTrue { 
    for (NSNumber *n in _dictMatch) { 
     if (![n boolValue]) return NO; 
    } 
    return YES; 
} 

,或者你不喜歡寫循環

NSSet *set = [NSSet setWithArray:_diceMatch]; 
return set.count == 1 && [[set anyObject] boolValue]; 

注意。

您可以添加

if (_dictMatch.count == 0) return YES; //or NO 

修復它。