2012-02-21 6 views
0

今私が取っている私のNSDictionary、低、高、及び計算平均を見つけるために、すべての値のループを実行しています。IOSはNSDictionaryの低い平均

私はですので、からIOSですので、これを行うより良い方法があるかどうか尋ねたいと思います。ある? ありがとう

+1

質問を編集してコードに貼り付けます。 –

答えて

4

この質問への正確な答えは、どのタイプのオブジェクトがNSDictionaryにあるかによって異なります。一般的な答えは、Key-Value Coding演算子を使用して、必要な処理を行うことができるということです。ここに例があります:

NSNumber *one = [NSNumber numberWithInt:1]; 
NSNumber *two = [NSNumber numberWithInt:2]; 
NSNumber *three = [NSNumber numberWithInt:3]; 

NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:one, @"apple", two, @"orange", three, @"pear", nil]; 
NSLog(@"The max number is %@", [[dictionary allValues] valueForKeyPath:@"@max.intValue"]); 
NSLog(@"The min number is %@", [[dictionary allValues] valueForKeyPath:@"@min.intValue"]); 
NSLog(@"The mean is %@", [[dictionary allValues] valueForKeyPath:@"@avg.intValue"]); 

これはおそらくあなた自身を列挙するより効率的ではありませんが、より簡潔です。

NSDictionaryの内容がNSNumberをプロパティとして持つカスタムクラスのオブジェクトである場合は、@avgの後ろにプロパティ名を配置することでこのメソッドを使用できます。 @avg.myProperty。これらのvalueForKeyPathメソッドはNSNumberを返すことに注意してください。

0

これを行うには、辞書を列挙することによってどのようにしているのかを確認するよりも良い方法はありません。これは主に、NSDictionaryに不透明なオブジェクトが含まれているためです。それらはNSStringであるかもしれません、それらはNSNumbersかもしれませんまたはCHZLolCatsかもしれません。彼らは何でもかまいません。だから、すべてが低、高、平均の概念を持っているわけではないので、低、高、平均の方法を持つことは理にかなっていません。

しかし、私たちにいくつかのコードを示したら、列挙の実際の方法について具体的なアドバイスを提供することができます。