Может быть, вы могли бы попробовать что-то подобное? Я положил его в модульный тест. Если вы не знакомы с синтаксисом, просто посмотрите на логику цикла for (NSNumber *num in listOfNumbers)
.
- (void)testExample {
// setup
NSMutableArray *listOfNumbers = [[NSMutableArray alloc]init];
[listOfNumbers addObject:[[NSNumber alloc]initWithInt:6]];
[listOfNumbers addObject:[[NSNumber alloc]initWithInt:4]];
[listOfNumbers addObject:[[NSNumber alloc]initWithInt:12]];
[listOfNumbers addObject:[[NSNumber alloc]initWithInt:-12]];
// sort
[listOfNumbers sortUsingSelector:@selector(compare:)];
// get the result
int result = 0;
for (NSNumber *num in listOfNumbers) {
if ([num intValue] > 0 ) {
result = [num intValue] - 1;
break;
}
}
STAssertEquals(result, 3, @"Was not 3");
}
Вы могли бы сделать некоторые другие вещи, такие как добавление переменной bool found
, чтобы уведомить, что не было найдено положительных чисел. Или вы можете оптимизировать, прочитав последнее значение в массиве - если оно отрицательное, то все значения в массиве отрицательные.