【问题标题】:Key-Value Coding and collection operators for collections which contain NSNull values包含 NSNull 值的集合的键值编码和集合运算符
【发布时间】:2013-02-09 20:52:14
【问题描述】:

当使用键值编码在NSArrays 上使用集合运算符(例如@min@max)时,如果数组中的值之一是NSNull null,则会出现异常。

在使用 valueForKeyPath 之前,我必须删除所有出现的 NSNull null 以使其工作:

NSMutableArray *array = otherArray.mutableCopy;
[array removeObjectIdenticalTo:[NSNull null]];
NSNumber *minValue = [array valueForKeyPath:@"@min.self"];
NSNumber *maxValue = [array valueForKeyPath:@"@max.self"];

但是,根据Apple's Documentation,我的代码应该可以在不删除NSNull null 的情况下工作:

如果键路径右侧的值为nil,则忽略。

如何使用 keyPath 语句获取数组的最小值和最大值,而不会出现运行时异常,也不必删除 NSNull nullbefore?

【问题讨论】:

  • 嗯... [NSNull null] 不为零,因此引用的文档不适用。

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


【解决方案1】:

您误解了文档。这个:

如果键路径右侧的值为nil,则忽略。

表示如果@min.field 为nil,它将被忽略。但是您正在做的是尝试计算包含 NSNumber 的集合的最小值和最大值。所以可能会使用 decimalValue 方法,但 NSNull 不符合该键的键值。所以你应该继续从集合中删除 NSNull 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多