这是我的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
}
if (indexPath.row >= [CatArray count])
{
return nil;
}
if(searching)
{
cell.textLabel.text=[ListOfArray objectAtIndex:indexPath.row];
}
else
{
NSString *cellv=[CatArray objectAtIndex:indexPath.row];
cell.textLabel.text=cellv;
}
return cell;
}
当我点击索引0处的对象时。它工作正常但是当点击索引1及以上时我的程序显示[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]
错误。我找不到如何修复此错误。
请帮忙。
答案 0 :(得分:3)
检查CatArray
计数时ListOfArray
计数不是。
打开异常中断并找出导致异常的行。
另请注意,从docs:
返回nil是一个错误从表视图可以使用的UITableViewCell继承的对象 对于指定的行。如果你返回零,则会引发断言。 -
答案 1 :(得分:1)
您应重新考虑代码的提示将出现在cellForRowAtIndexPath方法中:
if (indexPath.row >= [CatArray count])
{
return nil;
}
如果你的代码正确地回答了numberOfRowsInSection,那么这个条件永远不会发生,并带有相应数组的计数。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return (searching)? [ListOfArray count] : [CatArray count];
}
答案 2 :(得分:0)
错误信息应该非常清楚,您正在寻找索引中超出数组范围的对象。
这里的消息:索引1超出边界[0 .. 0] 意味着你在索引1处寻找对象,但是数组本身只有索引在0到0之间的对象。数组index从0开始。
尝试检查 CatArray 或 ListOfArray 是否具有您想要的对象。另外,检查如何计算表视图数据源numberOfRowsInSection
的返回值。