2011-12-13 57 views
0

我在下面的错误,这是由该件的下面的代码引起的:iPhone应用崩溃,因为“索引0超出界限为空数组”

错误

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解析。当我点击某个项目以查看详细视图时,它会崩溃。

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

另外我正在记录完整的newsItems数组,正好在崩溃之上。我可以告诉你,这不是空的。

因此,如果它不是行数,而不是一个空数组。它是什么?

一个奇怪的(?)事情: 我总是得到这个错误:“索引超越空阵列的界限”。即使我点击了第三行或第四行,这会给我一个错误,如“索引超出空数组边界”或其他。上详细视图的.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 
+1

你确定是不是代码?我看不到'[self.navigationController NewsDetailView动画:YES];'应该甚至能够编译。另一个提示:请使用小写第一个字母作为变量,大写首字母作为类别。这使得其他人更容易阅读你的代码。 – tonklon

+0

我想问题是NewsDetailView的实现。此外,您标记为有问题的行不是有效的objective-c。 – djromero

+0

@madmw什么是无效的? – Sven

回答

0

EDIT

**附加信息;

添加

@property (nonatomic, retain) NSMutableArray *newsItems; 

你的头和

@synthesize newsItems; 

您实现文件。

老答案:

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

嗯,好的。现在我明白了通克隆和马姆伍德在谈论什么。发布此问题时,我必须意外删除了pushViewController。 Xcode中的行实际上是这样的: [self.navigationController pushViewController:NewsDetailView animated:YES]; (就像你说的那样) 所以不幸的是,那不是答案。 – Sven

+0

你可以发布setAlleItems方法和setCurrentItemId方法吗? – ader

+0

和NSLog(@“%d”,[newsItems count]);输出? – ader

0

如何你草签了newsDetailView笔尖文件?

由于未创建或启动nib文件,索引数组越界异常发生与视图相关。

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

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

希望这有助于。

+0

我不喜欢使用Interface Builder,因此以编程方式编译所有内容。 – Sven

+0

当您初始化nib文件时?您发布的代码不会初始化nib。 – Basheer

+0

不,我没有初始化,因为没有nib文件.. – Sven

相关问题