2012-06-03 92 views
1

東西是不對的,這個代碼如果語句出現破

if ([g count] >= 1) { 
    NSLog(@"%@", [g objectAtIndex:1]); 
} 

繼續產生這種錯誤

reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 

除非我要瘋了,這是不應該的,對不對?

此時代碼不是多線程的,而我正在關閉一個簡單的數組。如果我的NSLog的g.count,我得到的1

編輯值:我也曾嘗試

if ([g count] > 0) { 
    NSLog(@"%@", [g objectAtIndex:1]); 
} 

,並得到了同樣的錯誤。

回答

3

count爲1時,表示您可以使用索引零。 1索引無效。

通常,只有從零到count-1(含)的索引有效。

+0

謝謝,我知道這是我的一些愚蠢的東西。有時候,簡單的事情無法迴避。我會在11分鐘內接受你的答案。 – Weston

3

如果數組數== 1,那麼它只有索引0對嗎?

正確的代碼將

if ([g count] >= 2) { 
    NSLog(@"%@", [g objectAtIndex:1]); 
} 

if ([g count] >= 1) { 
    NSLog(@"%@", [g objectAtIndex:0]); 
} 

根據你所需要的指標。

+0

謝謝你,雖然你是正確的dasblinkenlight擊敗你。我仍然會投票給你。 – Weston