在NSMutableArray中更改布尔值

riz*_*zle 0 boolean objective-c nsnumber nsmutablearray ios

所以我试图改变我所制作的NSMutableArray中的所有布尔值.

我有:

@property (nonatomic, retain) NSMutableArray *isDinosaurTapped;
Run Code Online (Sandbox Code Playgroud)

并合成:

@synthesize isDinosaurTapped;
Run Code Online (Sandbox Code Playgroud)

并设置[EDITED to show isDinosaurTapped]:

NSMutableArray *newDinosaurTaps = [[NSMutableArray alloc] init];
    for( int i = 0; i < [dinoSprites count]; i++ )
    {
        NSNumber *isTapped = [posPlist valueForKeyPath:[NSString stringWithFormat:@"Dinosaurs.Dinosaur_%i.isTapped", i]];
        [newDinosaurTaps addObject:isTapped];
    }
    self.isDinosaurTapped = [newDinosaurTaps copy];


    for( int i = 0; i < [isDinosaurTapped count]; i++ )
    {
        [isDinosaurTapped replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:NO]];
    }
Run Code Online (Sandbox Code Playgroud)

当我构建它的时候很好,但是当我实际构建并运行时,我不断得到一个SIGABRT:' - [__ NSArrayI replaceObjectAtIndex:withObject:]:发送到实例的无法识别的选择器.

我是否错误地设置了NSMutableArray的属性?但根据这个,我的属性应该没问题.

非常感谢任何反馈!:d

Cod*_*aFi 5

您正在尝试改变不可变数组.它是声明为NSMutableArray还是NSArray,如果它是可变的,你打电话-copy,还是-mutableCopy

在核心基础中,NSMutableArrays在内部称为__NSArrayM(用于可变),NSArrays称为__NSArrayI(用于不可变).

  • `copy`和`mutableCopy`是实例方法,应该以`-`为前缀,而不是`+`. (2认同)