谷歌根本没有透露任何关于此错误消息的帖子。我在 iOS 5 中尝试更新 UITableView 时遇到了这个问题。虽然确切的代码有点复杂,但这就是我对表和包含表数据的 NSMutableArray 所做的事情。这些调用是通过 PerformSelectorOnMainThread 调用从主线程之外进行的,如下面的代码片段所示。 NSMutableArray 部分是一个数组数组,每个数组代表一个部分,其中这些辅助数组是带有出现在表中的文本的 NSString。
从主线程开始:
[table performSelectorOnMainThread: @selector(beginUpdates) withObject: nil waitUntilDone: YES];
从另一个performSelectorOnMainThread调用的主要代码:
// Make sure the requested section exists.
if (sections == nil)
sections = [[NSMutableArray alloc] init];
while (section >= [sections count]) {
NSMutableArray *newArray = [[NSMutableArray alloc] init];
[sections addObject: newArray];
[table insertSections: [NSIndexSet indexSetWithIndex: [sections count]]
withRowAnimation: UITableViewRowAnimationNone];
}
// Insert the new row in the section.
NSMutableArray *rowArray = [sections objectAtIndex: section];
if (row > [rowArray count])
row = [rowArray count];
[rowArray insertObject: cellString atIndex: row];
[table insertRowsAtIndexPaths: [NSArray arrayWithObject: [NSIndexPath indexPathForRow: row inSection: section]]
withRowAnimation: UITableViewRowAnimationNone];
上述代码完成后调用:
[table performSelectorOnMainThread: @selector(endUpdates) withObject: nil waitUntilDone: YES];
调用 endUpdates 时发生错误。确切的错误消息是:
2012-01-04 14:28:10.951 myApp[2183:fb03] *** Assertion failure in -[UITableViewRowData rectForSection:], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewRowData.m:1449
2012-01-04 14:28:10.953 myApp[2183:fb03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect of invalid section (1)'
*** First throw call stack:
(0x1833052 0x1d94d0a 0x17dba78 0x11472db 0x99c832 0xa1b93b 0xa1b886 0xa1b451 0xa28134 0x8458e1 0x842602 0x84d211 0x84d23f 0x1834e72 0x10d69ef 0x180797f 0x176ab73 0x176a454 0x1769db4 0x1769ccb 0x33b6879 0x33b693e 0x7bea9b 0x1fad 0x1f25)
terminate called throwing an exception
这个错误是什么意思,我需要更改什么才能避免它?
看起来您的代码正在尝试使用表中不存在的部分。
由于 NSArray 是零索引的,因此索引值count
将超出数组的范围。使用时应该从计数中减一indexSetWithIndex:
here:
[table insertSections: [NSIndexSet indexSetWithIndex: [sections count]-1]
withRowAnimation: UITableViewRowAnimationNone];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)