iPhone应用程序在尝试推送详细视图时崩溃,因为"index 0 beyond bounds for empty array"



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

误差

由于未捕获异常'NSRangeException'而终止应用程序,原因:' -[NSMutableArray objectAtIndex:]:索引0超出空数组的界限'

- (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 feed填充。我正在使用XMLTouch进行解析。当我点击一个项目以进入详细视图时,它崩溃了。

我已经谷歌了这个问题,但我确实计算了- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {}方法(返回[newsItems count];)中的所有数组项。

我还记录了完整的newsItems数组,就在崩溃的上面。我可以告诉你,它不是空的。

如果不是行数,也不是空数组。这是什么?

一件奇怪的事:我总是得到这个错误:"索引0超出空数组的界限"。即使我点击第三或第四行,这会给我一个错误,如"index 3超出空数组的界限"或其他…对吧?

**关于详细视图的附加信息。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文件,因此发生与视图相关的索引数组越界异常。

所以尝试创建nib文件并在那之后推送视图控制器

因为如果没有nib文件,导航控制器就没有东西可以推送到堆栈。

希望能有所帮助。

EDIT;

添加
@property (nonatomic, retain) NSMutableArray *newsItems; 

到标题和

@synthesize newsItems; 

到你的实现文件。

老回答:

[self.navigationController pushViewController:NewsDetailView animated:YES];

相关内容

最新更新