2011-12-13 63 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

相關問題