这是tableView:cellForRowAtIndexPath:
方法中的代码,
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
// Configure the cell...
NSDictionary *temp = [self.placeArray objectAtIndex:[indexPath row]];
cell.textLabel.text = [temp objectForKey:@"name"];
cell.detailTextLabel.text = [[temp objectForKey:@"distance"] stringByAppendingString:@" km from Banglore"];
cell.imageView.image =[UIImage imageNamed:[temp objectForKey:@"category"]];
return cell;
我得到例外,
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]'
任何指针?
答案 0 :(得分:1)
检查你的Tableview委托就像,
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.placeArray.count;
}
否则请告诉我......
答案 1 :(得分:1)
异常本身为您提供答案。
您的self.placeArray
只包含3个元素,并且您尝试创建超过3个单元格。您需要确保self.placeArray
的计数在numberOfRowsInSection
方法中返回,并且当tableview重新加载时,此数组也不会异步更新。
答案 2 :(得分:1)
您在numberOfRowsForSection中返回的值大于placeArray中的对象数。
行后
NSDictionary *temp = [self.placeArray objectAtIndex:[indexPath row]];
添加此
NSLog(@"number of places = %i", [placeArray count]);
在该行添加断点。你会看到应用程序第四次碰到这个断点时会崩溃,因为numberOfRowsInSection正在返回> 3行,你的placeArray只有< = 3个对象