如何從字典中獲得NSArray的最大值?如何從包含字典的NSArray中獲取最大值?
可以說我有NSArray包含鍵「年齡」,「名稱」等詞典。 現在我想獲得最高年齡的記錄。 這可能與一些KVC的魔術?或者,我是否必須迭代並以「手動」方式進行操作?
我試着與此類似:
int max = [[numbers valueForKeyPath:@"@max.intValue"] intValue];
如何從字典中獲得NSArray的最大值?如何從包含字典的NSArray中獲取最大值?
可以說我有NSArray包含鍵「年齡」,「名稱」等詞典。 現在我想獲得最高年齡的記錄。 這可能與一些KVC的魔術?或者,我是否必須迭代並以「手動」方式進行操作?
我試着與此類似:
int max = [[numbers valueForKeyPath:@"@max.intValue"] intValue];
使用此代碼除非你的字典中的「intValue」是關鍵字,否則關鍵路徑不會有太大的好處。
如果是在使用@"@max.age"
(在字典上)來獲取它之後的最大年齡。字典中的任何其他鍵也一樣。
[myDictionary valueForKeyPath:@"@max.age"];
如果numbers
是值的數組,你可以使用@"@max.self"
的關鍵路徑,以獲得最大的價值。
[myArrayOfNumbers valueForKeyPath:@"@max.self"];
我用你的第二行從我的NSMutableArray(其中包含所有的NSNumber對象)獲得最大元素和我得到這個錯誤: ***由於未捕獲異常'NSUnknownKeyException',原因:'[<__ NSCFNumber 0x1dd44bc0> valueForUndefinedKey:]:這個類不是鍵最大編碼密鑰值。 任何想法有什麼不對? – uerceg 2013-03-07 10:50:39
對不起。我認爲它會表現爲NSPredicate,並在沒有其他指定時使用'self'。正確的第二個例子是'[myArrayOfNumbers valueForKeyPath:@「@ max.self」];'(回答更新) – 2013-03-07 11:01:07
我以爲你會提出這個解決方案,但真奇怪的是,這個更新的解決方案對我來說都不適用。我得到和以前一樣的錯誤信息。 – uerceg 2013-03-07 11:11:45
你就要成功了,你只需要指定你想從你想要的最大值精確字段:
NSInteger max = [[numbers valueForKeyPath:@"@max.age"] integerValue];
我冒昧地修改您的int
s到NSInteger
S,以防萬一有人想在iOS和OS X.
這是一個非常好的答案:),這是從接受的答案保證不投票 – Rambatino 2014-10-29 02:06:21
,如果你需要AGE ...使用@ max.age – waheeda 2012-07-17 12:53:57
人的最大價值,有時我真希望我們有這樣的事情[LINQ(http://en.wikipedia.org/wiki/Language_Integrated_Query)在可可.... – Jay 2013-02-26 07:10:00