我正在尝试使用此函数将分段表转换为平面列表到didSelectRowAtIndexPath(我有一个NSArray,它初始化了每个部分中包含的项目数):
某处...... :-)
self.sectionsArray = [NSArray arrayWithObjects:macroIntNumber(1), macroIntNumber(3), macroIntNumber(12), nil];
然后进入didSelectRowAtIndexPath:
int selectedRow = 0;
int a = indexPath.section;
for (int i=0; i<indexPath.section-1; i++) {
selectedRow += [[self.sectionsArray objectAtIndex:i] intValue];
}
selectedRow += indexPath.row;
但是......这会导致indexPath.section = 0崩溃(第一部分)。 因为循环无限播放直到NSArray调用崩溃... 奇怪!!!
强制for (int i=0; i<0-1; i++) {
正常工作
强制for (int i=0; i<a-1; i++) {
正常工作
我错过了什么?
答案 0 :(得分:4)
section
是NSUInteger
,所以它是未签名的。因此,在该无符号整数上从0减1会使您获得非常大的数而不是-1。
使用a
时有效,因为您已将a
声明为int
。 :)