Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios NSG字典低平均高_Ios_Nsdictionary - Fatal编程技术网

ios NSG字典低平均高

ios NSG字典低平均高,ios,nsdictionary,Ios,Nsdictionary,现在,我正在使用我的NSDictionary并运行一个所有值的循环,以查找低、高和计算平均值 由于我是新的到IOS,我想问一下是否有更好的方法来做到这一点。有?谢谢。没有比列举字典更好的方法了。这主要是因为NSDictionary包含不透明对象。它们可能是NSStrings,可能是NSNumbers,也可能是CHZLolCats。它们可以是任何东西。因此,采用低、高和平均的方法是没有意义的,因为并不是所有的东西都有低、高和平均的概念 但是,如果您向我们展示一些代码,我们可能能够提供有关实际枚举方

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


由于我是新的
IOS
,我想问一下是否有更好的方法来做到这一点。有?谢谢。

没有比列举字典更好的方法了。这主要是因为
NSDictionary
包含不透明对象。它们可能是
NSString
s,可能是
NSNumber
s,也可能是
CHZLolCat
s。它们可以是任何东西。因此,采用低、高和平均的方法是没有意义的,因为并不是所有的东西都有低、高和平均的概念


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

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


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

此问题的确切答案取决于您的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
方法返回NSnumber。

此问题的确切答案取决于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
方法返回NSnumber。

编辑问题并粘贴到代码中。编辑问题并粘贴到代码中。