2012-07-17 100 views
7

如何從字典中獲得NSArray的最大值?如何從包含字典的NSArray中獲取最大值?

可以說我有NSArray包含鍵「年齡」,「名稱」等詞典。 現在我想獲得最高年齡的記錄。 這可能與一些KVC的魔術?或者,我是否必須迭代並以「手動」方式進行操作?

我試着與此類似:

int max = [[numbers valueForKeyPath:@"@max.intValue"] intValue]; 
+0

,如果你需要AGE ...使用@ max.age – waheeda 2012-07-17 12:53:57

+1

人的最大價值,有時我真希望我們有這樣的事情[LINQ(http://en.wikipedia.org/wiki/Language_Integrated_Query)在可可.... – Jay 2013-02-26 07:10:00

回答

14

使用此代碼除非你的字典中的「intValue」是關鍵字,否則關鍵路徑不會有太大的好處。

如果是在使用@"@max.age"(在字典上)來獲取它之後的最大年齡。字典中的任何其他鍵也一樣。

[myDictionary valueForKeyPath:@"@max.age"]; 

如果numbers是值的數組,你可以使用@"@max.self"的關鍵路徑,以獲得最大的價值。

[myArrayOfNumbers valueForKeyPath:@"@max.self"]; 
+1

我用你的第二行從我的NSMutableArray(其中包含所有的NSNumber對象)獲得最大元素和我得到這個錯誤: ***由於未捕獲異常'NSUnknownKeyException',原因:'[<__ NSCFNumber 0x1dd44bc0> valueForUndefinedKey:]:這個類不是鍵最大編碼密鑰值。 任何想法有什麼不對? – uerceg 2013-03-07 10:50:39

+0

對不起。我認爲它會表現爲NSPredicate,並在沒有其他指定時使用'self'。正確的第二個例子是'[myArrayOfNumbers valueForKeyPath:@「@ max.self」];'(回答更新) – 2013-03-07 11:01:07

+0

我以爲你會提出這個解決方案,但真奇怪的是,這個更新的解決方案對我來說都不適用。我得到和以前一樣的錯誤信息。 – uerceg 2013-03-07 11:11:45

1

你就要成功了,你只需要指定你想從你想要的最大值精確字段:

NSInteger max = [[numbers valueForKeyPath:@"@max.age"] integerValue]; 

我冒昧地修改您的int s到NSInteger S,以防萬一有人想在iOS和OS X.

+1

這是一個非常好的答案:),這是從接受的答案保證不投票 – Rambatino 2014-10-29 02:06:21

相關問題