尝试推送详细视图时iPhone应用程序崩溃,因为“索引0超出了空数组的界限”

时间:2011-12-13 10:05:57

标签: iphone cocoa-touch crash

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

错误

  

由于未捕获的异常'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进行解析。当我单击某个项目以进入详细视图时,它会崩溃。

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

此外,我正在崩溃的正上方记录完整的newsItems数组。我可以告诉你,它不是空的。

所以,如果它不是行数,而不是一个空数组......它是什么?

一个奇怪的(?)事情: 我总是得到这个错误:“索引 0 超出空数组的范围”。即使我点击第三行或第四行,这会给我一个错误,比如“索引 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

2 个答案:

答案 0 :(得分:0)

EDIT;

添加

@property (nonatomic, retain) NSMutableArray *newsItems; 

到你的标题和

@synthesize newsItems; 

到您的实施文件。

老答案:

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

答案 1 :(得分:0)

如何为newsDetailView初始化nib文件?

由于未创建或启动nib文件,因此索引数组超出范围异常与视图相关。

因此,尝试创建nib文件并在此之后推送视图控制器。

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

希望这会有所帮助。