0

我正在制作一个显示列表中人员姓名的代码。

每个日期的列表都不同,所以我的问题是,当只有 1 个或没有人签名并且我创建了一个索引超出人数限制的数组时,它崩溃了。我知道发生这种情况是因为数组为空,但是如何让代码忽略空数组?

我试图制作一个“如果”来计算数组的数量,然后决定发布数组或不发布名称。但它不像这样工作,我仍然得到越界异常。

我应该如何管理空数组?

我的代码:

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

它应该是:

if ([arr5 count] > 5) {

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

实际上,索引 5 将对应于第六个数组项,因此您必须在其中至少有 6 个对象。

如果要检查数组边界,请在所有情况下使用相同的模式。

于 2012-10-20T16:34:40.097 回答
0

问题是您期望 componentsSeparatedByString 的返回值根据您的期望返回一致的结果。

显然那是行不通的。

数组处理很简单。不要要求不存在的对象。

检查 count 并且只访问从 0 到 count - 1 的索引;

如果计数为零,则不要访问任何内容。

于 2012-10-20T16:36:02.983 回答