#objective-c #ios7 #nsmutablearray
#objective-c #ios7 #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» на наличие всех истинных значений?
Ответ №1:
Если ваш массив может содержать только значения «true» ( @YES
) или «false» ( @NO
), то вы можете просто проверить отсутствие @NO
:
if (![_diceMatch containsObject:@NO]) {
// all elements are "true"
}
Ответ №2:
NSUInteger numberOfTrueValues = 0;
for (NSNumber *value in _diceMatch) {
if ([value boolValue]) {
numberOfTrueValues ;
}
}
Ответ №3:
Кратчайший путь? может быть, и нет. Самый простой способ? ДА
- (BOOL)isDictMatchAllTrue {
for (NSNumber *n in _dictMatch) {
if (![n boolValue]) return NO;
}
return YES;
}
или вам не нравится писать цикл
NSSet *set = [NSSet setWithArray:_diceMatch];
return set.count == 1 amp;amp; [[set anyObject] boolValue];
Примечание: первая версия возвращается YES
, когда массив пуст, но возвращается вторая версия NO
.
Вы можете добавить
if (_dictMatch.count == 0) return YES; //or NO
чтобы это исправить.