ios nsdictionary低平均值高

时间:2012-02-21 17:32:29

标签: ios nsdictionary

现在我正在使用我的NSDictionary并运行所有值的循环来查找低,高和计算平均值。

由于我IOS,我想询问是否有更好的方法来执行此操作。在那儿? 感谢

2 个答案:

答案 0 :(得分:4)

此问题的确切答案取决于NSDictionary中的对象类型。答案通常是你可以使用键值编码操作符来做你想要的。这是一个例子:

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方法返回NSNumbers。

答案 1 :(得分:0)

没有比通过枚举词典更好的方法来做到这一点。这主要是因为NSDictionary包含不透明对象。它们可能是NSString,可能是NSNumber,也可能是CHZLolCat。它们可以是任何东西。因此,采用低,高和平均方法是没有意义的,因为并非所有方法都具有低,高和平均的概念。

但是,如果您向我们展示了一些代码,我们可能会就实际的枚举方法提供具体的建议。