2012-01-13 6 views
0

Webから.txtファイルを取得し、2次元配列に解析するアプリケーションを作成しています(実際はNSMutableArrayに各要素のNSArrayがあります)。 UITableView内のNSArray(各NSArrayはサブラベルを使用してロードされます)。私は(16のインデックス)アプリのクラッシュ... 17セルまでスクロールしたら17th uitableviewcellに到達するとアプリケーションがクラッシュする

とにかく、

の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; 

注:このコードはかなりひどいですように私はあなたたちはそれをクリーンアップする提案があれば、私は聞いてみたい...感じますそれ。 '* - [NSMutableArrayのobjectAtIndex:]:範囲外のインデックス6 [0 .. 3]'

キャッチされない例外により 'NSRangeException'、理由にアプリを終了*:ここ

とエラーメッセージです

+0

あなたが持っている問題を理解するために、最小の例が便利です。 –

+0

クラッシュしたときに受け取ったログステートメントを投稿できますか? –

+1

データソースメソッドとは何かのように見えます。このメソッドのどのラインがクラッシュを引き起こしていますか?私はあなたの問題が別の場所にあると感じています。おそらく、テーブルビュー上のセクションまたは行の数をどのように決定しているのでしょうか。 – Rog

答えて

0

私の推測では、あなたはこれを持っていて、他の人はそれを好きです。

label.text = [[musicList.list objectAtIndex:indexPath.row] objectAtIndex:artistIndex]; 

てみてください、私の経験で

label.text = [[musicList.list objectAtIndex:artistIndex] objectAtIndex:indexPath.row]; 

、Objective-Cの中に2次元配列を扱うことは時々混乱することができます。特にUITableViewsで作業する場合。

私は右だ感じが、これは、

NSInteger artistIndex = 1; 
NSInteger albumIndex = 3; 
NSInteger dateIndex = 6; 
NSInteger imageIndex = 5; 

1 + 3 + 6 + 5 = 15、および16の1以上、である必要がありますどのような、あなたがでクラッシュしている正確な指標です。

+0

助けてくれてありがとう。私が解析していたファイルがエラーであることが判明しましたが、あなたの答えがなければ、そこに着くのに私はしばらく時間がかかりました。 – Rob

0

cellForRowAtIndexpathのコードを投稿する必要があります。 また、クラッシュが発生したときに表示されるコンソールメッセージを送信する必要があります。

言われているように、17番目のセルをクラッシュさせてレンダリングする操作のように聞こえます。それは、EXC_BAD_ACCESSからNSLogの間違った引数を渡すまで何でもかまいません。

これは修正するのが簡単なエラーのようです。あなたのコードとエラーメッセージを投稿してください。

関連する問題