NSArray valueForKey:@" @ max.self"?

时间:2016-08-11 07:08:59

标签: ios objective-c nsarray key-value-coding

我有Array个数字,我希望找到最高价值。 我这样做如下:

NSNumber *test = [fuelConsumption valueForKey:@"@max.self"];

当我构建然后运行时,出现以下错误:

  

由于未捕获的异常终止应用' NSUnknownKeyException',原因:' [< __ NSArrayM 0x7b26e8d0> valueForUndefinedKey:]:此类不是密钥max.self的密钥值编码兼容。'

据我所知,这就是人们寻找这个价值的方式。 任何可能出错的想法?​​

我正在为iOS9.x编程并使用Xcode 7.3.1

2 个答案:

答案 0 :(得分:1)

您收到异常,因为当您valueForKey: NSString时,它会调用objectForKey:,当字符串以@开头时,它会调用[super valueForKey:] ,可能会调用可能引发异常的valueForUndefinedKey:

因此,将valueForKey:更改为valueForKeyPath:,例如

NSNumber *test = [fuelConsumption valueForKeyPath:@"@max.self"];

详细了解kvc-collection-operators

答案 1 :(得分:0)

您需要使用valueForKeyPath

 NSNumber *test = [fuelConsumption valueForKeyPath:@"@max.self"];

有关Collection Operators阅读apple documentation的更多信息。