我遇到以下错误,这是由下面的代码引起的:
错误
由于未捕获的异常'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
答案 0 :(得分:0)
EDIT;
添加
@property (nonatomic, retain) NSMutableArray *newsItems;
到你的标题和
@synthesize newsItems;
到您的实施文件。
老答案:[self.navigationController pushViewController:NewsDetailView animated:YES];
答案 1 :(得分:0)
如何为newsDetailView初始化nib文件?
由于未创建或启动nib文件,因此索引数组超出范围异常与视图相关。
因此,尝试创建nib文件并在此之后推送视图控制器。
因为没有nib文件,导航控制器没有任何东西可以推送到堆栈。
希望这会有所帮助。