[英]Key-Value Coding and collection operators for collections which contain NSNull values
当使用键值编码对NSArrays
使用集合运算符(例如@min
, @max
)时,如果数组中的NSNull null
则会出现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的文档,我的代码应该可以在不删除NSNull null
情况下工作:
如果键路径右侧的值为nil,则忽略它。
如何在不获取运行时异常的情况下使用keyPath语句获取数组的最小值和最大值,而无需在之前删除NSNull null
?
你误解了文档。 这个:
如果键路径右侧的值为nil,则忽略它。
意味着如果@min.field为nil,则会被忽略。 但你正在做的是尝试计算包含NSNumber的集合的最小值和最大值。 因此可能会使用decimalValue方法,但NSNull不符合该键的键值。 所以你应该继续从集合中删除NSNull对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.