NSMutableArray属性的初始化和更新

假设我有一个@property,它是一个包含四个对象使用的分数的NSMutablearray。 他们将被初始化为零,然后在viewDidLoad和应用程序的整个操作过程中更新。

出于某种原因,我不能把想法放在需要做的事情上,特别是在声明和初始化步骤。

我相信这可以是一个私人财产。

@property (strong, nonatomic) NSMutableArray *scores; @synthesize scores = _scores; 

然后在viewDidLoad我尝试这样的事情,但得到一个错误。 我想,我只需要语法方面的帮助。 或者我错过了一些非常基本的东西。

 self.scores = [[NSMutableArray alloc] initWithObjects:@0,@0,@0,@0,nil]; 

这是一个适当的方式来初始化它? 那么如何添加(NSNumber *)updateValue,例如,第n个值?

编辑:我想我想通了。

 -(void)updateScoreForBase:(int)baseIndex byIncrement:(int)scoreAdjustmentAmount { int previousValue = [[self.scores objectAtIndex:baseIndex] intValue]; int updatedValue = previousValue + scoreAdjustmentAmount; [_scores replaceObjectAtIndex:baseIndex withObject:[NSNumber numberWithInt:updatedValue]]; } 

有没有更好的方法来做到这一点?

你正在初始化viewDidLoad ,但是你应该在init做。

这两者都是相似的,并且完全有效。

 _scores = [[NSMutableArray alloc] initWithObjects:@0,@0,@0,@0,nil]; 

要么,

 self.scores=[[NSMutableArray alloc]initWithObjects:@0,@0,@0, nil]; 

你最后的问题… Then how do I add (NSNumber *)updateValue to, say, the nth value? 如果添加addObject:它将被添加到最后。 你需要在所需的索引中insertObject:atIndex:对象insertObject:atIndex:所有后续的对象将转移到下一个索引。

  NSInteger nthValue=12; [_scores insertObject:updateValue atIndex:nthValue]; 

编辑:

编辑完成后,

 NSInteger previousValue = [[_scores objectAtIndex:baseIndex] integerValue]; NSInteger updatedValue = previousValue + scoreAdjustmentAmount; [_scores replaceObjectAtIndex:baseIndex withObject:[NSNumber numberWithInt:updatedValue]];