每次杀戮时都试图计算得分并且每次加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];
答案 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
”保留伊达或财产)。