包含NSNull值的集合的键值编码和集合运算符

时间:2013-02-09 11:52:43

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

使用键值编码在@min上使用集合运算符(例如@maxNSArrays)时,如果数组中的某个值为NSNull null,则会出现异常。

我必须删除所有NSNull null次出现才能使用valueForKeyPath使其正常工作:

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 null

1 个答案:

答案 0 :(得分:2)

你误解了文档。这个:

  

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

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