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]];