未从数组向uitableviewcell添加图像时未捕获的异常

时间:2014-08-01 16:57:46

标签: objective-c arrays uitableview

当我的图像数组中没有要添加的图像时,我一直收到未捕获的异常错误。以下是我的一些代码:

这是我的 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info方法:

    UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];
self.photoImage = image;
[self.photoArray addObject:self.photoImage];
//[self.tableView reloadData];
[picker dismissViewControllerAnimated:YES completion:nil];

这是我的TableView单元格块:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ListPrototypeCell" forIndexPath:indexPath];

XYZToDoItem *toDoItem = [self.toDoItems objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont fontWithName:@"Poiret One" size:18];
cell.textLabel.text = toDoItem.itemName;

NSDictionary *dict = [self.tableArray objectAtIndex:indexPath.row];
cell.detailTextLabel.textColor = [UIColor grayColor];
cell.detailTextLabel.text = [dict objectForKey:@"Time"];

//adding blank index and crashing
UIImage *photo = [self.photoArray objectAtIndex:indexPath.row];
    cell.imageView.image = photo;

if (toDoItem.completed) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;

我在[View DidLoad]方法中初始化了数组。

1 个答案:

答案 0 :(得分:0)

为了确保你在界限范围内,你可以这样做:

if(indexPath.row<[self.photoArray count]) //add the photo

但是,我会担心你为什么首先得到这个错误。是因为self.toDoItemsself.tableArrayself.photoArray是不同大小的数组吗?如果是这样,那么一定要检查它们的尺寸。

编辑:对于评论中的第二个问题,要在addButton方法上添加空行,您需要向数据源添加一个空对象。我认为你必须:

[self.toDoItems addObject:<whatever your empty object looks like>];
[self.tableArray addObject:<whatever your empty object looks like>];
[self.tableView reloadData];

数据更新后,您必须更换最后一个单元格(空对象),如下所示:

[self.toDoItems replaceObjectAtIndex:[self.toDoItems count]-1 withObject:newObject];
[self.tableArray replaceObjectAtIndex:[self.tableArray count]-1 withObject:newObject];
[self.tableView reloadData];