3

每次击杀时都试图计算一个分数,每次击杀都加 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];
4

2 回答 2

7

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

NSMutableArray * scoreTally = [NSMutableArray array];

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

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

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

于 2013-08-17T06:55:05.113 回答
1

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

您需要创建一次scoreTally“ ”数组,然后随着分数的不断增加,向其中添加其他对象。

因此,我建议将您的“ scoreTally”创建移到其他地方,例如viewDidLoad视图控制器的“”方法(确保scoreTally通过 ivar 或属性保留“”)。

于 2013-08-17T06:53:59.530 回答