2016-01-04 2 views
-3

вот мой код, NSMutableDictionary * dictstud1marks = [NSMutableDictionary dictionary];Gettnig Максимальное значение из nsdictionary

[dictstud1marks setObject:@40 forKey:@"Maths"]; 
[dictstud1marks setObject:@50 forKey:@"English"]; 
[dictstud1marks setObject:@60 forKey:@"Science"]; 

NSMutableDictionary *dictstud2marks = [NSMutableDictionary dictionary]; 

[dictstud2marks setObject:@50 forKey:@"Maths"]; 
[dictstud2marks setObject:@60 forKey:@"English"]; 
[dictstud2marks setObject:@80 forKey:@"Science"]; 


NSMutableDictionary *dictstud3marks = [NSMutableDictionary dictionary]; 

[dictstud3marks setObject:@70 forKey:@"Maths"]; 
[dictstud3marks setObject:@80 forKey:@"English"]; 
[dictstud3marks setObject:@90 forKey:@"Science"]; 


NSMutableDictionary *dictstud =[NSMutableDictionary dictionary]; 

[dictstud setObject:dictstud1marks forKey:@"Ram"]; 
[dictstud setObject:dictstud2marks forKey:@"Rohit"]; 
[dictstud setObject:dictstud3marks forKey:@"Saraf"]; 

Я хочу знать, как получить максимальные значения из этого словаря. Help помогите мне решить. Спасибо заранее,

+0

Какой словарь; Есть 4? – trojanfoe

+0

NSMutableDictionary –

+0

Это NSMutableDictionary, он вложен nsdictionary Я хочу максимальные значения во всем словаре –

ответ

0
NSMutableDictionary *maximumDictFinal= [[NSMutableDictionary alloc] init]; 
NSString *marks; 
NSArray *temp = [dictstud allKeys]; 
for (int i=0 ; i<[temp count]; i++) { 
    NSMutableDictionary *maximumDict = [[NSMutableDictionary alloc] init]; 

    NSArray *blockSortedKeys = [[dictstud objectForKey:[temp objectAtIndex:i]] keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 
     // Switching the order of the operands reverses the sort direction 
     return [obj2 compare:obj1]; 
    }]; 
    marks = [[[dictstud objectForKey:[temp objectAtIndex:i]]allValues] valueForKeyPath:@"@max.intValue"]; 
    [maximumDict setObject:marks forKey:[blockSortedKeys objectAtIndex:0]]; 
    [maximumDictFinal setObject:maximumDict forKey:[temp objectAtIndex:i]]; 

     } 
NSLog(@"maximumDict..%@",maximumDictFinal); 

Согласно Ваш комментарий

int maximum =0; 
int prevMaximum ; 
for (NSDictionary *dict in dictstud) 
{ 

    prevMaximum =[[[[dictstud objectForKey:dict]allValues] valueForKeyPath:@"@max.intValue"] intValue]; 
    if (prevMaximum >maximum) { 
     maximum =prevMaximum; 

    } 

} 
NSLog(@"maximum marks of student ..%d",maximum); 
+0

что вы сделали правильно, спасибо, но я хочу получить результат как сейчас 90, пожалуйста, скажите мне –

+0

Спасибо за песок, за помощь в этом. –

-1

Попробуйте этот раз:

NSLog(@"maximum marks of student ..%@",[[[dictstud objectForKey:@"Saraf"]allValues] valueForKeyPath:@"@max.intValue"]); 
+0

Спасибо, что ответили sandy –

+0

ya Я хочу максимальное значение из всего 3 предметов для конкретного учащегося. сделанный. это прекрасно? – sandy

+0

Я, это прекрасно работает. –

0

Trying ответ Песчаного в цикле обеспечит ваш ожидаемый результат.

for (NSDictionary *dict in dictstud) 
{ 
      NSLog(@"maximum marks of student ..%@",[[[dictstud objectForKey:dict]allValues] valueForKeyPath:@"@max.intValue"]); 
} 
Смежные вопросы