我完全糊涂了。我正在修改我的表,它通过添加/删除行和重新加载部分来崩溃。所以我停止添加和删除行,它仍然崩溃。所以我停止重新加载部分,它仍然崩溃。所以我只是把代码:
[self.tableView beginUpdates];
[self.tableView endUpdates];
使用此代码崩溃,没有它没问题。
为什么?
2014-09-12 21:52:41.257 weatherApp [12616:60b] *由于未捕获的异常终止应用程序' NSRangeException',原因:' * - [__NSArrayM objectAtIndex:]:索引1超出边界[0 .. 0]' * 第一次抛出调用堆栈: (0x2ea84f83 0x392ffccf 0x2e9bb7cb 0x3149eaef 0x3149cd8f 0x3149c843 0x31474e5b 0xeb82d 0xed059 0x313d48f7 0x3137bc27 0x3137b47d 0x312a1d59 0x30f1f62b 0x30f1ae3b 0x30f1accd 0x30f1a6df 0x30f1a4ef 0x30f6dc49 0x33d3a75d 0x2f770451 0x2ea44ea9 0x2ea4fa67 0x2ea4fa03 0x2ea4e1d7 0x2e9b8ebf 0x2e9b8ca3 0x33912663 0x3130514d 0x107599 0x3980cab7) libc ++ abi.dylib:以NSException类型的未捕获异常终止
编辑:请注意我在cellForRowAtIndexPath中调用此更新,因为我需要在显示新单元格时检查更新。导致此更新的代码是[self updateSection代码,它现在只运行开始更新,结束更新。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
WFHNotamTableViewCell *cell = (WFHNotamTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellTableIdentifier forIndexPath:indexPath];
if (!cell)
{
NSLog(@"Dequeue blank cell");
}
NSLog(@"Loading %d - %d", indexPath.section, indexPath.row);
NSString *group;
NSString *icao = [metarManager getIdentifierAtTotalIndex:indexPath.section andReturnGroup:&group];
NSMutableDictionary *notamDict = [notamManager getNotamFor:icao atVisibleIndex:indexPath.row];
NSDate *lastUpdate = [notamDict objectForKey:@"timeDownloaded"];
[self updateSection:indexPath.section andLastUpdate:lastUpdate];
return cell;
谢谢!