0

リスト上の人の名前を表示するコードを作成しています。

リストは日付ごとに異なるため、私の問題は、署名された人が1人しかいないか、まったくいない場合に、人数の制限を超えてインデックスを持つ配列を作成すると、クラッシュすることです。配列が空であるためにこれが発生することはわかっていますが、コードで空の配列を無視するにはどうすればよいですか?

配列の数をカウントする「if」を作成してから、配列を投稿するか、名前を投稿しないかを決定しようとしました。しかし、このようには機能しません。まだ範囲外の例外が発生します。

空の配列はどのように管理すればよいですか?

私のコード:

NSString *html = [request2 responseString];
NSMutableArray *arr2 = [html componentsSeparatedByString:@"vagter"];
NSString *html1 = [arr2 objectAtIndex:1];

//name1
NSMutableArray *arr3 = [html1 componentsSeparatedByString:@"<td><font color=#ffffff>"];
NSString *html2 = [arr3 objectAtIndex:1];
NSMutableArray *arr4 = [html2 componentsSeparatedByString:@"</font></td>"];
NSString *html3 = [arr4 objectAtIndex:0];

_name.text = html3;

//name 2
NSMutableArray *arr5 = [html1 componentsSeparatedByString:@"<td><font color=#ffffff>"];

if ([arr5 count] > 4) {
    NSString *html4 = [arr5 objectAtIndex:5];
    NSMutableArray *arr6 = [html4 componentsSeparatedByString:@"</font></td>"];
    NSString *html5 = [arr6 objectAtIndex:0];

    _name.text = html5;
}
else
{
    _name1.text = @"No name";
}
4

2 に答える 2

0

It should be:

if ([arr5 count] > 5) {

    NSString *html4 = [arr5 objectAtIndex:5];
    ...

Indeed, index 5 will correspond to the sixth array item, so you have to have at least 6 objects in it.

Use the same pattern, if you want to check for the array bounds, in all cases.

于 2012-10-20T16:34:40.097 に答える
0

問題は、 componentsSeparatedByString からの戻り値が期待どおりに一貫した結果を返すことを期待していることです。

明らかにそれは機能していません。

配列の処理は簡単です。そこにないオブジェクトを要求しないでください。

カウントを確認し、0 からカウント - 1 までのインデックスのみにアクセスします。

count がゼロの場合、何にもアクセスしないでください。

于 2012-10-20T16:36:02.983 に答える