太奇怪了:
_tableDataSectionTitles是此UITableViewController子类的属性& NSArray。
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSLog(@"%@", _tableDataSectionTitles); // returns: ( "string" )
NSLog(@"%@", [_tableDataSectionTitles objectAtIndex:0]); // returns: "string"
NSLog(@"%i", section); // returns 0
NSLog(@"%@", [_tableDataSectionTitles objectAtIndex:section]; // returns "string"
return [_tableDataSectionTitles objectAtIndex:section]; // returns: *** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array
那是什么!? (其他一切都正常工作。我检查了。三次。)(严重的是,这就像它贯穿的第一件事,所以这里没有任何错误)
即使使用数组,我也尝试过它:
NSString *rep = [[NSString alloc] init];
if (section == 0) {
rep = @"Stuff";
} else { // doesn't even need it - it won't run through it anyway
//rep = [_tableDataSectionTitles objectAtIndex:section]; // commented out just to not have any doubts
}
return rep;
但仍然是同样的错误。帮助!
答案 0 :(得分:0)
以下代码可帮助您轻松检测代码的错误部分
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *title = @"Empty";
NSLog(@"count: %d", [_tableDataSectionTitles count]);
NSLog(@"section: %d", section);
if([_tableDataSectionTitles count] > section)
title = [_tableDataSectionTitles objectAtIndex:section]
return title;
}
答案 1 :(得分:0)
显然,错误显示[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array
意思是,即使不应该,数组也是空的。所以我不确定究竟是什么问题,但您可以按照以下步骤调试问题,
仅在数组不为空时返回标题
if([_ tableDataSectionTitles count]> 0) { return [_tableDataSectionTitles objectAtIndex:section]; } 其他 { return @“默认标题”; }
在代码中的某处将alloc init数组启用..?可以在ViewDidLoad或init方法中使用。?如果不这样做并尝试。
如果再遇到任何奇怪的事,请告诉我们。希望它有所帮助.. :)
答案 2 :(得分:0)
所以,事实证明我的_tableDataSectionContents数组是空的,而_tableDataSectionTitles中有一个。所以,我仍然不明白为什么它确实引发了一个完全独立的数组的错误,但它现在有效!谢谢你的帮助。