如何汇总 NSArray 中的所有数字?

How can summarize all numbers in NSArray?

我有带字符串的 NSArray - 00:02:34、02:05:17 所以我需要计算数组中的所有字符串并得到结果:2 hours:7 分 51 秒。

我试过这个:

// 从数组中获取第一个字符串,并通过以下方式分隔三个对象:

for (NSDictionary *dic in dicts) {
      NSString *string = dic[@"duration"]; (my type of string 00:00:00)
       NSArray *components = [string componentsSeparatedByString:@":"];
        NSInteger minutes  = [components[1] integerValue];
        NSInteger seconds  = [components[2] integerValue];
        NSInteger hour     = [components[0] integerValue];
}

但是我怎样才能对这个日期求和以获得结果呢?感谢您的帮助。

您可以通过几种不同的方式来解决这个问题。

就个人而言,我会遍历 dicts 并将每个 duration 字符串转换为 seconds 并在循环。

然后,您可以轻松地将累计秒数转换回小时、分钟和秒,并在循环完成后将它们组合成一个字符串:

int totalSeconds = 0;
for (NSDictionary * dic in dicts) {
    NSString *string = dic[@"duration"];
    NSArray *components = [string componentsSeparatedByString:@":"];
    totalSeconds += (int) [components[0] integerValue] * 60 * 60;
    totalSeconds += (int) [components[1] integerValue] * 60;
    totalSeconds += (int) [components[2] integerValue];
}

int hour = totalSeconds / 3600;
int mins = (totalSeconds % 3600) / 60;
int secs = totalSeconds % 60;
NSString * totalString = [NSString stringWithFormat:@"%d:%d:%d", hour, mins, secs];

注意:您必须编写一些代码来组成字符串并适当地包含零,其中任何值都小于 10。