У меня есть приложение, в котором есть один tabbarcontroller, который содержит навигационный контроллер для каждой вкладки.Каждый навигационный контроллер заканчивается контроллером представления с именем DetailViewController.Но если пользователь переходит к DetailViewController на одной вкладке, а затем переключается на вкладку и там тоже переходит к DetailViewController, и приложение вылетает с ошибкой:
2011-08-19 21:14:45.257 Kluringar[4368:ef03] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 0]'
Код, который выдвигает DetailViewController, выглядит следующим образом:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
kluringIdString = [[kluringar objectAtIndex:indexPath.row] objectForKey:@"id"];
DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"detail"];
[self.navigationController pushViewController:detail animated:YES];
}
Код, который получает данные из базы данных и добавляет их в массив, выглядит следующим образом:
-(void) getAllRowsFromTableNamed {
//—-retrieve rows—-
NSString *qsql = [NSString stringWithFormat:@"SELECT * FROM Kluringar ORDER BY rubrik"];
sqlite3_stmt *statement;
kluringar = [[NSMutableArray alloc] init];
NSMutableDictionary *kluringarDictionary = [[NSMutableDictionary alloc] init];
if (sqlite3_prepare_v2( db, [qsql UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *kluringId = (char *) sqlite3_column_text(statement, 2);
NSString *kluringIdStr = [[NSString alloc] initWithUTF8String: kluringId];
char *rubrik = (char *) sqlite3_column_text(statement, 3);
NSString *rubrikStr = [[NSString alloc] initWithUTF8String: rubrik];
//---add items---
[kluringarDictionary setValue:kluringIdStr forKey:@"id"];
[kluringarDictionary setValue:rubrikStr forKey:@"rubrik"];
[kluringar addObject:[kluringarDictionary copy]];
}
//—-deletes the compiled statement from memory—-
sqlite3_finalize(statement);
}
}
Вот ссылка на раскадровку: раскадровка
Заранее!:)