insertRowsatIndexPath异常iOS

时间:2013-10-28 19:04:07

标签: ios insert rows

* 由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'尝试将第0行插入第0部分,但第0部分只有0行更新后

我意识到这里的问题是我正在尝试向tableView添加一个单元格,但它并不希望它不添加一个单元格而且我无法弄清楚原因。

- (IBAction)addNewIngredient: (id) sender
{
    NSString *newIngredient = [recipe createIngredient];
    [[recipe ingredients]addObject:newIngredient];

    //figure out where that item is in the array
    int lastRow = [[recipe ingredients]indexOfObject: newIngredient];

    NSIndexPath *ip = [NSIndexPath indexPathForRow:lastRow inSection:0];

    NSLog(@"Added a new ingredient!");

    [[self tableView] insertRowsAtIndexPaths:[NSArray arrayWithObject:ip] withRowAnimation:
     UITableViewRowAnimationTop];


}

澄清我在这里尝试做的事情:

配方有一个属性成分,是一系列NSStrings。 我正在向配料阵列添加一个对象(这会自动增加阵列数量,还是我必须手动执行?)...

然后我用" int lastRow = [[recipe ingredients] indexOfObject:newIngredient]"来确定该项目在数组中的位置。 然后获得指向那里的索引路径。然后将该成分插入tableView。

1 个答案:

答案 0 :(得分:1)

您例外的原因是当您插入行时,您的numberOfRowsInSection将再次被调用。

那时,您的数据需要更新,这样如果您有0行并且正在插入一行,则该函数返回1