A questo punto, quattro persone intelligenti (escluso me stesso) hanno sottolineato che stai inviando -removeObjectAtIndex:
a un oggetto che pensa che sia una matrice immutabile. Questo sarebbe un buon momento per iniziare a chiedersi perché la matrice è immutabile quando in precedenza si pensava che fosse mutabile. Se pubblichi un codice che mostra come viene creato l'array, qualcuno qui sarà probabilmente in grado di mostrarti cosa non funziona.
Un modo in cui si può finire con un array immutabile quando si pensava di averne uno mutabile è copiare un array mutabile. Ad esempio, si potrebbe avere una proprietà:
@property (copy) NSMutableArray *myArray;
Forse quindi creare una matrice mutevole, aggiungere alcuni oggetti, e assegnarlo alla vostra proprietà:
NSMutableArray *tempArray = [NSMutableArray array];
[tempArray addObject:@"You say goodbye"];
[tempArray addObject:@"I say hello"];
self.myArray = tempArray;
Ora, fa il punto tempArray ad un mutabile array o un array immutabile? Non l'ho provato di recente, ma sono abbastanza sicuro che tu abbia un array immutabile. Ottieni decisamente un immutableArray se dici:
NSMutableArray *foo = [tempArray copy];
Quindi, avviare alla ricerca di luoghi nel codice in cui viene riassegnato il puntatore array. Dopotutto, se il tuo puntatore puntava davvero su un array mutabile, sarebbe terribilmente difficile spiegare l'eccezione che stai ricevendo.
È sufficiente verificare se si sta allocando e iniziando correttamente NSMutableArray.Sembra che tu stia iniziando come NSArray (che non ha la funzione removeObjectAtIndex) – Krishnabhadra
è un NSMuteableArray ... inizializzato e dichiarato come tale. – StanLe
si prega di verificare, è il mutablearray sta andando fuori ambito o viene riassegnato da qualche parte nel codice. – Ravin