簡體   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