Objective c N UITableView中的内部一致性异常
我正在开发一个聊天应用程序,当发送和接收同时发生的消息时,我会遇到异常 在-[UITableView\u endCellAnimationsWithContext:],/SourceCache/UIKit/UIKit-2380.17/UITableView.m:1070 2013-04-30中断言失败 16:55:14.314[2689:907]由于未捕获异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第0*节中的行数 更新(19)后现有节中包含的行数必须等于更新(17)前该节中包含的行数,加上或减去从该节中插入或删除的行数(插入1行,删除0行),加上或减去移入或移出该节的行数(0迁入,0迁出)。'Objective c N UITableView中的内部一致性异常,objective-c,Objective C,我正在开发一个聊天应用程序,当发送和接收同时发生的消息时,我会遇到异常 在-[UITableView\u endCellAnimationsWithContext:],/SourceCache/UIKit/UIKit-2380.17/UITableView.m:1070 2013-04-30中断言失败 16:55:14.314[2689:907]由于未捕获异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第0*节中的行数 更新(19
错误消息是不言自明的——您告诉表视图您想插入一个单元格,但是在表的数据源中,您说它有两个额外的单元格要显示(19而不是17)
几乎可以肯定的是,问题不在您发布的代码中,而是在数据源的
numberOfRows
方法中,或者在插入额外单元格时的代码中。一旦显示numberOfRows方法??例外情况是删除或添加行。只需检查numberOfRows方法?一旦粘贴即可。i添加行必须在问题中粘贴numberOfRows方法您可以粘贴您的代码如何添加行吗;[tableview ScrollToRowatineXpath:indexPath atScrollPosition:UITableViewScrollPositionTop动画:是];});这就是我更新tableview的地方
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
static NSString* CellIdentifier = @"MessageCellIdentifier";
MessageTableViewCell* cell = (MessageTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[MessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
Message* message = [self.dataModel.messages objectAtIndex:indexPath.row];
[cell setMessage:message];
return cell;
}
- (int)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.dataModel.messages count];
}
- (void)didSaveMsg:(NSMutableArray *)array1
{
self.dataModel.messages = array1;
[tableview insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:array1.count-1 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
[self scrollToNewestMessage];
}
- (void)scrollToNewestMessage
{
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void){
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:(self.dataModel.messages.count - 1) inSection:0];
[tableview scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
});
[tableview reloadData];
[[DBModel database]updateMessageCount1:mobileNo cnt:@"0"];
}