У меня есть массив, в котором я храню разные классы, которые снова содержат разные массивы.Все массивы определены как NSMutabelArrays.
Когда я хочу удалить объект в массиве, мое приложение вылетает.Это мой код:
NSLog(@"string to be deleted:%@", [[[self.myLibrary objectAtIndex:self.currentNoteBookNumber] tabReference] objectAtIndex:tid]);
NSLog(@"string to be deleted:%@", [[[self.myLibrary objectAtIndex:self.currentNoteBookNumber] tabColours] objectAtIndex:tid]);
NSLog(@"string to be deleted:%@", [[[self.myLibrary objectAtIndex:self.currentNoteBookNumber] tabTitles] objectAtIndex:tid]);
[[[self.myLibrary objectAtIndex:self.currentNoteBookNumber] tabReference] removeObjectAtIndex:tid];
[[[self.myLibrary objectAtIndex:self.currentNoteBookNumber] tabColours] removeObjectAtIndex:tid];
[[[self.myLibrary objectAtIndex:self.currentNoteBookNumber] tabTitles] removeObjectAtIndex:tid];
И это вывод консоли:
2011-05-01 22:03:40.788 M[61452:207] string to be deleted:2
2011-05-01 22:03:40.789 M[61452:207] string to be deleted:Orange
2011-05-01 22:03:40.791 M[61452:207] string to be deleted:Art
2011-05-01 22:03:40.806 M[61452:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'
Я действительно не знаю, что я делаю неправильно.Очевидно, что в массиве что-то есть, поэтому оно не должно быть 0. Я имею в виду, что это ЕДИНСТВЕННАЯ вещь, хранящаяся в массиве в данный момент, но это не должно быть проблемой, я полагаю?
Я был бы очень признателен за любую помощь в этом.
РЕДАКТИРОВАТЬ:
Я думаю, что я не предоставил достаточно кода,Это метод, в котором я настроил myLibrary:
-(void) setupLibrary {
myLibrary = [[NSMutableArray alloc] init];
NoteBook *newNoteBook = [[NoteBook alloc] init];
newNoteBook.titleName = @"TEST";
NSMutableArray *ttArray = [[NSMutableArray alloc] init];
[ttArray addObject:@"Art"];
NSMutableArray *tcArray = [[NSMutableArray alloc] init];
[tcArray addObject:@"Orange"];
NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject: [NSNumber numberWithInteger:2]];
newNoteBook.tabTitles = ttArray;
newNoteBook.tabColours = tcArray;
newNoteBook.tabReference = trArray;
[myLibrary addObject:newNoteBook];
currentNoteBookNumber = 0;
[newNoteBook release];
[ttArray release];
[tcArray release];
[trArray release];
}
Теперь кажется, что если я удаляю, например, один объект в массиве tabTitles (например, «Art»)Я удаляю весь объект newNoteBook.Т.е., когда я удаляю строку в tabTitles, все остальные строки в той же позиции в tabColours или tabReference также будут удалены.Почему это так?
Следующий код завершит работу после успешного удаления строки @ position 0 в массиве моего класса, который хранится в другом массиве:
NSLog(@"string deleted:%@", [[[self.myLibrary objectAtIndex:0] tabReference] objectAtIndex:0]);
[[[self.myLibrary objectAtIndex:0] tabReference] removeObjectAtIndex:0];
NSLog(@"string deleted:%@", [[[self.myLibrary objectAtIndex:0] tabColours] objectAtIndex:0]);
[[[self.myLibrary objectAtIndex:0] tabColours] removeObjectAtIndex:0];