【发布时间】:2015-09-02 17:49:25
【问题描述】:
我正在尝试返回数组中的最小数字。
参数: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 指针地址与 int 进行比较。
-
你为什么有那个 for 循环呢?你已经在第一行得到了最小值。
-
@vikingosegundo 明白了!谢谢!我一直在追逐自己的尾巴。哈哈
标签: ios objective-c arrays nsnumber nsinteger