2010-11-21 2 views
9

Questo è probabilmente un problema semplice, ma qualcuno potrebbe essere in grado di darmi un suggerimento su cosa c'è che non va nel seguente scenario, semplicemente non capisco. Ho un NSMutableArray "playerArray", che ha oggetti "ZERO", "UNO", "DUE", TRE ".NSMutableArray removeObjectAtIndex causa errore

Sto cercando di rimuovere l'oggetto in" riga "ma non funziona. Potrebbe essere in modo che restituisca una matrice immutabile come l'eccezione sembra farsi espellere perché non risponde a removeObjectAtIndex

NSUInteger row = 1; // [indexPath row]; 
NSLog(@"playerArray:%@", playerArray); 
NSLog(@"row: %i", row); 
[playerArray removeObjectAtIndex:row]; 

il risultato è:?

playerArray :(
ZERO,
ONE,
DUE, TRE

)
2010-11-21 20: 58: 46,681 FamQuiz_v2 [2166: 207] consecutive: 1
2010-11-21 20: 58: 46,682 FamQuiz_v2 [2166: 207] - [__ NSArrayI removeObjectAtIndex:]: selettore non riconosciuto inviato ad esempio 0x5e3b9a0
2010-11-21 20: 58: 46,683 FamQuiz_v2 [2166: 207] * terminazione app causa eccezione non identificata 'NSInvalidArgumentException', motivo: '- [__ NSArrayI removeObjectAtIndex:]: selettore non riconosciuto inviato all'istanza 0x5e3b9a0'

+0

Show dove si crea playerArray. – bbum

risposta

19

Sembra che l'array non sia in realtà un NSMutableArray. Verificarlo accedendo il nome della classe:

NSLog(NSStringFromClass([playerArray class])); 

o, verificare con:

if ([playerArray isKindOfClass: [NSMutableArray class]]) 
{ 
... 
} 
+0

Dopo aver eseguito NSLog, sopra, la classe è: __NSArrayI ?? Qualcuno può spiegare come può essere? Nell'interfaccia @ ho "NSMutableArray * playerArray;" e "@property (nonatomic, retain) NSMutableArray * playerArray;". – PeterK

+0

... e come posso risolvere questo problema? – PeterK

+2

Bene, come l'hai istanziato? Guarda qui. – d11wtq

9

Il messaggio di errore indica che playerArray è un'istanza di NSArray, non NSMutableArray. Non è possibile chiamare removeObjectAtIndex su un'istanza di NSArray.

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance