Я пишу приложение, которое извлекает файл .txt из Интернета, анализирует его в 2-мерный массив (по сути. Это фактически NSMutableArray с NSArray для каждого элемента), а затем отображает каждый NSArray внутри UITableView ( он загружает каждый NSArray с использованием подуровней).
В любом случае, когда я прокручиваю вниз до 17-й ячейки (индекс 16), приложение вылетает ...
UITableView должен иметь 483 ячейки (для целей тестирования), но я не могу прокрутить 16-ю ячейку без сбоев.
Изменить на почтовый индекс и ошибку:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
[[tableView layer] setCornerRadius:3.0];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"identifier"]autorelease];
}
NSInteger artistIndex = 1;
NSInteger albumIndex = 3;
NSInteger dateIndex = 6;
NSInteger imageIndex = 5;
// ARTIST
CGRect frame = CGRectMake(59, 11, 244, 13);
UILabel *label = [[UILabel alloc]initWithFrame:frame];
label.font = [UIFont boldSystemFontOfSize:13];
label.textColor = [UIColor blackColor];
label.text = [[musicList.list objectAtIndex:indexPath.row] objectAtIndex:artistIndex];
[cell addSubview:label];
// ALBUM (more like description...
frame = CGRectMake(60, 30, 244, 11);
label = [[UILabel alloc]initWithFrame:frame];
label.font = [UIFont boldSystemFontOfSize:11];
label.textColor = [UIColor darkGrayColor];
label.text = [[musicList.list objectAtIndex:indexPath.row] objectAtIndex:albumIndex];
[cell addSubview:label];
// DATE
frame = CGRectMake(59, 49, 244, 10);
label = [[UILabel alloc]initWithFrame:frame];
label.font = [UIFont fontWithName:@"Helvetica" size:10.0];
label.textColor = [UIColor darkGrayColor];
label.textAlignment = UITextAlignmentRight;
label.text = [[musicList.list objectAtIndex:indexPath.row] objectAtIndex:dateIndex];
[cell addSubview:label];
// IMAGE
NSString *urlString = [[musicList.list objectAtIndex:indexPath.row] objectAtIndex:imageIndex];
NSData *urlData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:urlString]];
UIImage *myImage = [[UIImage alloc]initWithData:urlData];
UIImageView *myImageView = [[UIImageView alloc] init];
myImageView.image = myImage;
myImageView.frame = CGRectMake(8,9,44,44);
[myImageView.layer setMasksToBounds:YES];
[myImageView.layer setCornerRadius:3.0];
[[cell contentView] addSubview:myImageView];
[urlData release];
[myImage release];
[myImageView release];
[label release];
return cell;
ПРИМЕЧАНИЕ: я чувствую, что этот код довольно ужасный ... Если у вас, ребята, есть какие-либо предложения по его очистке, я бы хотел услышать его.
А вот и сообщение об ошибке:
* Завершение работы приложения из-за необработанного исключения 'NSRangeException', причина: '* - [NSMutableArray objectAtIndex:]: индекс 6 за пределами [0 .. 3]'