繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM