Я пытаюсь вернуть самое низкое число в массиве.Поиск самого низкого NSInteger от NSArray
Параметр: arrayOfNumbers - массив из NSNumbers.
Возврат: наименьшее число в массиве как NSInteger.
Код, который у меня до сих пор не дает мне никаких ошибок, но не проходит модульные тесты. Что я делаю не так?
- (NSInteger) lowestNumberInArray:(NSArray *)arrayOfNumbers {
NSNumber* smallest = [arrayOfNumbers valueForKeyPath:@"@min.self"];
for (NSInteger i = 0; i < arrayOfNumbers.count; i++) {
if (arrayOfNumbers[i] < smallest) {
smallest = arrayOfNumbers[i];
}
}
NSInteger smallestValue = [smallest integerValue];
return smallestValue;
}
Это тестовый модуль:
- (void) testThatLowestNumberIsReturned {
NSInteger lowestNumber = [self.handler lowestNumberInArray:@[@3, @8, @-4, @0]];
XCTAssertEqual(lowestNumber, -4, @"Lowest number should be -4.");
lowestNumber = [self.handler lowestNumberInArray:@[@83, @124, @422, @953, @1004, @9532, @-1000]];
XCTAssertEqual(lowestNumber, -1000, @"Lowest number should be -1000.");
}
Вы сравниваете объекты с типами c, в результате чего адреса im pointer сравниваются с int. – vikingosegundo
Почему у вас есть это для цикла вообще? Вы уже получаете мин в первой строке. – dan
@vikingosegundo получил! благодаря! Некоторое время я гонялся за своим хвостом. LOL – ioskaveen