Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Objective c 遍历数组的元素,然后求平均值_Objective C_Arrays - Fatal编程技术网

Objective c 遍历数组的元素,然后求平均值

Objective c 遍历数组的元素,然后求平均值,objective-c,arrays,Objective C,Arrays,我在Objective-C中有一个存储基本里程数据的数组。所以每次我添加到数组中,我都会添加4个元素(英里、升、成本、英里)。如果我保存10个条目,我最终会得到10个元素,比如说成本。我如何迭代一个特定的元素,给它们分配一个索引,将它们全部相加,然后除以总索引号?? 我发现大量的信息在基本数组中循环,这些数组只包含数字并执行平均值,但我似乎无法将其缩小到特定的元素?我应该用我需要的数据创建一个新的数组,然后平均这些数据,还是可以直接在主数组上工作,这样会更容易些 这只适用于平面阵列,如果它只填充

我在Objective-C中有一个存储基本里程数据的数组。所以每次我添加到数组中,我都会添加4个元素(英里、升、成本、英里)。如果我保存10个条目,我最终会得到10个元素,比如说成本。我如何迭代一个特定的元素,给它们分配一个索引,将它们全部相加,然后除以总索引号?? 我发现大量的信息在基本数组中循环,这些数组只包含数字并执行平均值,但我似乎无法将其缩小到特定的元素?我应该用我需要的数据创建一个新的数组,然后平均这些数据,还是可以直接在主数组上工作,这样会更容易些

这只适用于平面阵列,如果它只填充了我的成本数据,它将循环并打印到控制台

for (NSString* string in arrayOfStrings ){
NSLog(@"%@", string);
}
那么,我将如何深入到这个数组中,比如说,寻找我的特定成本元素,实现相同的目标呢。我想我可以从那里开始工作

arrayOfStrings.cost

你应该发布一些代码,因为我不清楚你做了什么数组。数组中的元素只有索引,而没有名称。您可能需要一组NSD字典。然后做一些类似的事情:

int sum = 0;
int count = 0;
for(NSDictionary *entry in myArray) {
    NSNumber cost = [entry valueForKey:@"cost"];
    if(cost) {
        sum += [cost intValue];
        count++;
    }
}
int costAvg = sum / count;

如果创建具有成本特性的类:

@interface MYCostObject : NSObject

@property double cost;

@end
您可能认为您可以在MYCostObjects集合上循环:

MYCostObject* foo = [[MYCostObject alloc] init];
MYCostObject* bar = [foo copy];
foo.cost = 10.0;
bar.cost = 2.0;
NSArray* myArray = @[foo, bar];

double sum = 0.0;
for (MYCostObject* costObj in myArray)
{
    sum += costObj.cost;
}
double avg = sum/myArray.count;
但您也可以跳过循环中的枚举并使用:


我想你刚刚启发了我。你可以想象,我把太多精力放在了阵列上,而忘记了我想做什么。我将尝试你的回答,因为它是有意义的。看起来就像我想要的,你已经从数组中填充了一个字典,然后搜索循环的成本键,然后除以循环的数量。无论如何,在我混乱的头脑中。如果我没有准备好代码的副本,我会设法回去的!!谢谢你的快速回复,不客气。您还可以创建一个新类“MilagereCord”(或其他任何类)作为您自己的NSObject子类,并创建一个由MilagereCords而不是NSDictionary填充的NSArray。。。取决于您希望操作这些条目的程度。如果它们有很多逻辑,那么一个类是有意义的。非常好,这确实非常有帮助。最后,我对我的原始问题使用了collection操作符。感谢您的帮助和及时回复。
NSNumber* avg = [myArray valueForKeyPath:@"@avg.cost"];