2013-02-09 27 views
0

當使用鍵 - 值編碼我得到一個異常,如果陣列中的值中的一個是NSNull nullNSArrays使用集合運算符(例如@min@max)。鍵 - 值編碼和收集運營商值

我必須使用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工作:

如果值了關鍵路徑的右側是零,它被忽略。

如何在不獲取運行時異常的情況下使用keyPath語句獲取數組的最小值和最大值,並且不必先刪除NSNull null

+0

那麼...... [NSNull null]不是零,所以引用的文檔不適用。 – 2013-02-09 12:19:15

回答

2

您誤解了文檔。這個:

如果關鍵路徑右邊的值是零,它將被忽略。

表示如果@ min.field爲零,它將被忽略。但是你正在做的是試圖計算包含NSNumber的集合的最小值和最大值。所以可能會使用decimalValue方法,但NSNull不是該鍵的兼容鍵值。所以你應該繼續從集合中刪除NSNull對象。