2011-10-08 43 views
0

這是爲什麼會崩潰?可可不能在第一個索引之後訪問數組元素?

NSArray *domain = [webView.request.URL.absoluteString componentsSeparatedByString:@"/"]; 
NSString *str1 = [domain objectAtIndex:2]; 

這是我的錯誤:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSArray objectAtIndex:]: index 2 beyond bounds [0 .. 0]' 

我能夠使用objectAtIndex:0就好了。

+0

這不是任何標準的C++。 – wilhelmtell

+0

@All:關於2.問題,請忽略它,不要開始任何火焰之戰。謝謝! – Phlibbo

回答

2

錯誤與數組有關元素。你正在考慮的那個包含多於零個元素。你確定你正在尋找正確的東西嗎?此外,如果您不止一次調用該代碼,則可能是一次使用一個值,另一次使用另一個值。

在該行放置一個斷點並查看domain在每次迭代中的值。

+0

好吧,讓我們說數組沒有元素,我該如何防止它崩潰呢?如何檢查元素是否先存在,如果存在則繼續? – user969622

+1

@ user969622,使用'NSArray' [[count()'](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html)方法查看數組是否爲空或者查看您正在查找的索引是否確實存在(如果它高於元素的總數,那麼當然它不存在)。爲了將來參考,請查看班級文件並查看「任務」類別。你會發現支持的方法按其目的分類。 – rid

+0

我試過'NSMutableArray * domain = [webView.request.URL.absoluteString componentsSeparatedByString:@「/」]; \t \t \t \t \t \t NSInteger的*計數= [域計數];'但它是最後一行 – user969622

1

在這些行之間插入NSLog(@"%@",domain);,看看你實際上在數組中獲得了什麼。這聽起來像是你正在分裂的字符串中的斜線,這會給你兩個元素。 NSArray索引是基於零的,就像C數組一樣。

爲什麼可可這樣的一個神經該死的痛*

你只是在試圖通過反覆試驗教你自己,或者你花時間去完成任何教程?

+0

這就是我得到: '的 「http:」, 「」, 「www.google.com」, 「Q =測試」' 反覆試驗,並通過教程搜索。沒想到這會很複雜。我正在寫幾行代碼來完成我通常在一行中執行的操作... – user969622

+0

@ user969622,對於使用全新編程語言的用戶來說,他們以前從未見過編寫幾行代碼來執行某些操作他們通常會按照他們所知道的一種語言進行操作。隨着實踐,這將改變。 – rid

+0

如果這是您在日誌中看到的內容,那麼objectAtIndex:2會正常工作。在創建數組和訪問數組之間還有其他一些代碼嗎? – jrturton

相關問題