NSArray *vals = {100,100,50,50,50}
maximumValue = [[vals valueForKeyPath: @"@max.self"] intValue];
返回
maximumValue:50
答案 0 :(得分:0)
你可能有一个字符串数组。当比较为字符串时,“50”大于“100”,因为5在1之后。你需要先转换为整数,然后取最大值。
不幸的是,ObjC没有map
功能,所以你需要手动完成。
NSMutableArray *intArray = [NSMutableArray array];
for (NSString *val in vals) {
[intArray addObject:@(val intValue)];
}
maximumValue = [[intArray valueForKeyPath: @"@max.self"] intValue];
修改强>
根据Sulthan的建议,您还可以执行以下操作:
NSArray *a = @[ @"50", @"100" ];
NSLog(@"%@", [[a valueForKeyPath:@"intValue"] valueForKeyPath:@"@max.self"]);
第一次调用valueForKeyPath:@"intValue"
会给出NSNumber
个数组。此时,@max.self
键路径给出了期望值,因为元素之间进行了数值比较。
答案 1 :(得分:-2)
NSArray *vals = @[@100,@100,@50,@50,@50];
NSLog(@"%d",[[vals valueForKeyPath: @"@max.self"] intValue]