Skip to main content
 首页 » 编程设计

iphone之尝试推送详细 View 时,iPhone应用程序崩溃,因为 “index 0 beyond bounds for empty array”

2026年03月30日58zhoujg

我遇到以下错误,这是由以下代码段引起的:

错误

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 无法将任何内容压入堆栈。

希望这会有所帮助。