如何添加NSMutableArray的总和

时间:2013-08-17 06:52:09

标签: ios objective-c nsmutablearray

每次杀戮时都试图计算得分并且每次加5分,但是,它永远不会增加值,因此即使在进行了额外的杀戮之后也会停留在5点。以下是我的数组代码。

        NSMutableArray * scoreTally = [NSMutableArray array];
        NSNumber *scoreValue = [NSNumber numberWithInteger:5];
        [scoreTally addObject:scoreValue];

        int sum=0;
        for(int x=0; x < [scoreTally count]; x++)
        {
            sum += [[scoreTally objectAtIndex:x] intValue];
        }

        NSLog(@"SUM %D",sum);

        score.text = [NSString stringWithFormat:@"Score: %d",sum];

2 个答案:

答案 0 :(得分:7)

只需从您的方法中删除此行并将其放在-viewDidLoad

NSMutableArray * scoreTally = [NSMutableArray array];

建议:我注意到您的代码中有一件事是您使用for loop来计算总和。有一种更好的方法可以计算一个名为KVC的数组中所有值的总和。

int sum = [scoreTally valueForKeyPath:@"@sum.self"];

KVC的最佳部分是它非常简单易用,它将行代码的数量减少到一行,从而缩短了时间。

答案 1 :(得分:1)

这是因为您不断重新创建“scoreTally”数组,因此它会不断重置为具有单个NSNumber对象的数组。

您需要创建“scoreTally”数组 一次 ,然后在分数不断添加时添加其他对象。

所以我建议您在其他地方移动“scoreTally”创建,例如视图控制器的“viewDidLoad”方法(确保通过“scoreTally”保留伊达或财产)。