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