【问题标题】:Error Using max/min on Numbers in NSDIctionary在 NSDIctionary 中对数字使用最大/最小值时出错
【发布时间】:2012-12-24 16:41:57
【问题描述】:

使用新的文字语法创建字典,因此:

NSDictionary *valuesByHour = @{
    @9: @2,
    @10: @2,
    @11: @3,
    @12: @3,
    @1: @2,
    @2: @2
};

然后,我想找到最大值,像这样:

return [[self.valuesByHour allValues] valueForKeyPath:@"max.intValue"];

但出现此错误:

[<__NSCFNumber 0x9f6fbe0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key max.

也尝试过以旧方式实际创建 NSNumber,例如[NSNumber numberWithInt:2]。

【问题讨论】:

    标签: objective-c cocoa kvc


    【解决方案1】:

    您在密钥路径的开头缺少@

    return [[self.valuesByHour allValues] valueForKeyPath:@"@max.intValue"];
    

    【讨论】:

    • 似乎很奇怪,错误会抱怨 KVC 合规性,而不是说语法没有意义。以为可能在 NSNumber 中有一个名为 max 的隐藏属性。无论如何,谢谢。
    • 语法非常合理。 @ 语法是一个特殊的集合运算符。 developer.apple.com/library/ios/#documentation/cocoa/conceptual/… 没有集合操作符,你是在询问键“max”的值并且没有这样的东西(但很容易出现,编译器不知道你是否提供它)。
    • 我的意思是它可能已经发现 @ 丢失并提供了一个更有用的错误。
    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多