Изменение логического значения в NSMutableArray - PullRequest
0 голосов
/ 08 марта 2012

Итак, я пытаюсь изменить все логические значения в NSMutableArray, который я создал, и следовал из здесь.

у меня есть:

@property (nonatomic, retain) NSMutableArray *isDinosaurTapped;

и синтезировано:

@synthesize isDinosaurTapped;

и настройте [ИЗМЕНЕНО, чтобы показать 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]];
    }

Когда я собираю его нормально, однако, когда я на самом деле собираю и запускаю, я продолжаю получать SIGABRT: '- [__ NSArrayI replaceObjectAtIndex: withObject:]: нераспознанный селектор, отправленный экземпляру.

Неправильно ли я установил свойства NSMutableArray? Но согласно this , мои свойства должны быть в порядке.

Любая обратная связь с благодарностью! : D

Ответы [ 2 ]

5 голосов
/ 08 марта 2012

Вы пытаетесь изменить неизменяемый массив.Он объявлен как NSMutableArray или NSArray, и если он изменчивый, вы вызывали -copy или -mutableCopy?

В базовом фундаменте NSMutableArrays внутренне известны как __NSArrayM (для изменяемых) и NSArraysизвестны как __NSArrayI (для неизменяемого).

0 голосов
/ 08 марта 2012

Он жалуется, что вы отправляете replaceObjectAtIndex: withObject: селектор в NSArray, который является неизменным / неизменяемым после создания NSMutableArray - это изменяемая версия NSArray. Вы инициализировали свойство isDinosaurTapped с помощью NSArray? Вы должны звонить примерно так, прежде чем использовать свою собственность.

self.isDinosaurTapped = [NSMutableArray array]; // or another nsmutable creation method.

Если у вас есть NSArray, который вы хотите клонировать в свою собственность, вы можете использовать:

self.isDinosaurTapped = [NSMutableArray arrayWithArray:array];
...