我遇到以下错误,这是由以下代码段引起的:
错误
Terminating app due to uncaught exception 'NSRangeException', reason: ' -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'
代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
newsDetailView *NieuwsDetailView = [[newsDetailView alloc] init];
[NewsDetailView setAlleItems:newsItems];
[NewsDetailView setCurrentItemId:indexPath.row];
NSLog(@"%@", newsItems);
[self.navigationController pushViewController:NewsDetailView animated:YES]; // This line gives the error
[NewsDetailView release];
}
我有一个UITableView,其中包含来自在线XML提要的新闻项。我正在使用XMLTouch进行解析。当我单击某个项目以进入详细 View 时,它崩溃了。
我已经用Google搜索了这个问题,但是我确实在
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {}方法(返回
[newsItems count];)中计算了所有数组项。
另外,我还在崩溃上方记录了完整的newsItems数组。我可以告诉你,它不是空的。
所以,如果不是行数而不是空数组,那是什么?
一件事(?):
我总是收到此错误:“索引 0 超出了空数组的范围”。即使我单击了第三行或第四行,也会出现类似“index 3 超出空数组的界限”之类的错误。
**有关详细 View .m的附加信息,**
- (void)viewDidLoad {
[super viewDidLoad];
[self setTitle:@"News"];
}
- (void)loadView {
[super loadView];
NSString *titel;
NSString *bericht;
NSString *datum;
NSString *foto;
titel = [[newsItems objectAtIndex: currentItemId] objectForKey: @"titel"];
bericht = [[newsItems objectAtIndex: currentItemId] objectForKey: @"bericht"];
datum = [[newsItems objectAtIndex: currentItemId] objectForKey: @"datum"];
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2) {
foto = [[newsItems objectAtIndex: currentItemId] objectForKey: @"fotoRetina"];
} else {
foto = [[newsItems objectAtIndex: currentItemId] objectForKey: @"foto"];
}
// Code I've ommited to keep things clear.
// I created a scrollView and put stuff in it, here. If anybody is interested in seeing this I can update this.
}
// No viewWillAppear, setAlleItems or setCurrentItemId methods
请您参考如下方法:
您如何初始化newsDetailView的nib文件?
由于未创建或启动nib文件,因此发生了与 View 相关的索引数组超出范围异常。
因此,尝试创建nib文件,然后推送 View Controller 。
因为在没有nib文件的情况下,导航 Controller 无法将任何内容压入堆栈。
希望这会有所帮助。


