0

在使用键值编码时使用集合运算符(例如@min@max)时,NSArrays如果数组中的一个值为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 的文档,我的代码应该可以在不删除的情况下工作NSNull null

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

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

4

1 回答 1

2

您误解了文档。这:

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

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

于 2013-02-09T12:52:14.947 回答