Objective c valueForKeyPath:@"@“最大自我”;数字为100时不工作
返回 最大值:50Objective c valueForKeyPath:@"@“最大自我”;数字为100时不工作,objective-c,nsarray,max,Objective C,Nsarray,Max,返回 最大值:50 您可能有一个字符串数组。当与字符串比较时,“50”大于“100”,因为5在1之后。您需要先转换为整数,然后取最大值 不幸的是,ObjC没有map功能,因此需要手动执行 NSArray *vals = {100,100,50,50,50} maximumValue = [[vals valueForKeyPath: @"@max.self"] intValue]; 编辑 根据Sulthan的建议,您还可以执行以下操作: NSMutableArray *intArray = [
您可能有一个字符串数组。当与字符串比较时,“50”大于“100”,因为5在1之后。您需要先转换为整数,然后取最大值 不幸的是,ObjC没有
map
功能,因此需要手动执行
NSArray *vals = {100,100,50,50,50}
maximumValue = [[vals valueForKeyPath: @"@max.self"] intValue];
编辑
根据Sulthan的建议,您还可以执行以下操作:
NSMutableArray *intArray = [NSMutableArray array];
for (NSString *val in vals) {
[intArray addObject:@(val intValue)];
}
maximumValue = [[intArray valueForKeyPath: @"@max.self"] intValue];
对
valueForKeyPath:@“intValue”
的第一次调用给出了一个NSNumber
s的数组。此时,在元素之间进行数字比较时,@max.self
键路径给出了期望值。您的代码不是有效的Obj-C。如何将int直接分配给nsarray?。欢迎。请不要将它们作为NSString
对象进行比较,而应将它们作为NSNumber
对象进行比较,因为@“50”
大于@“100”
,所以您应该像这样尝试,例如NSArray*vals=@[@100,@100,@50,@50]
[NSArray valueForKey:
可以用作Objective-C中的映射。此外,如果您的猜测为真,您可以在原始数组上使用@“@max.intValue”
。这似乎不是真的<代码>NSArray*a=@[@“50”,“100”];NSLog(@“%@,[a valueForKey:@“max.intValue”])代码>不起作用。在max
之前缺少@
。True。补充说。仍然崩溃。[@[@“0”、“1”、“5”、“10”]valueForKeyPath:@“@max.intValue”]
。您需要使用-valueForKeyPath
。
NSArray *a = @[ @"50", @"100" ];
NSLog(@"%@", [[a valueForKeyPath:@"intValue"] valueForKeyPath:@"@max.self"]);
NSArray *vals = @[@100,@100,@50,@50,@50];
NSLog(@"%d",[[vals valueForKeyPath: @"@max.self"] intValue]