在此行中獲取錯誤:問題與陣列
NSString *nmm =[narr objectAtIndex:1];
錯誤顯示:
'NSRangeException',原因:「*** - [NSCFArray objectAtIndex:]:索引 (1) (1)'
在此行中獲取錯誤:問題與陣列
NSString *nmm =[narr objectAtIndex:1];
錯誤顯示:
'NSRangeException',原因:「*** - [NSCFArray objectAtIndex:]:索引 (1) (1)'
它看起來像你的數組只有一個值(你可以在索引0,而不是索引1訪問)。
您應該從運行時檢查narr的內容開始。這聽起來像內容不是你期望他們在執行期望的點。右鍵你在你的問題發佈前行,使用的NSLog通話記錄的數組的內容是這樣的:
NSLog(@"Contents of array: %@", narr);
然後運行應用程序並檢查控制檯錯誤發生之後。花一些時間學習如何使用NSLog,斷點和GDB控制檯 - 它們最終會在調試時節省大量的挫折。
您對unset的回答提出了另一個觀點:爲什麼要在同一個字符串中存儲多個數據片段?把name
,lname
和id
分離成單獨的字符串並將每個字符串放到它自己的數組單元中是不是更容易?然後,您可以使用[narr objectAtIndex:]
訪問它們,而無需擔心每次需要這些信息時都要解析字符串。
NSMutableArray * narr = [[NSMutableArray alloc] initWithArray:[my readItems:n]]; 即時通訊從另一個類的「readItems」數據庫中提取數據。這將返回數組,我將它存儲在'narr'這個類中。現在我想顯示'narr'.im在這裏得到錯誤[narr objectAtIndex:1]的數據。 – xcodemaddy 2010-05-21 04:45:29
我明白你想要做什麼,但是你會遇到一個越界錯誤,這意味着數組'narr'幾乎肯定不包含你認爲它所做的事情。使用我描述的NSLog方法將允許您在運行時真正看到該數組的內容。看到你之前評論過的(在unset的回答下),對[narr objectAtIndex:0]的調用給出同樣的錯誤,我猜測'narr'可能是空的,並且這個錯誤在於它的初始化。 – Endemic 2010-05-21 15:32:32
是......謝謝。這顯示數據,但我不能分配給文本框。 code here。 NSString * nmm = [narr objectAtIndex:0]; \t \t nametxt.text = ???; 這個nmm保存名字,lname和id,我想在文本框中顯示它 – xcodemaddy 2010-05-20 10:19:33
'nmm'是一個'NSString',所以如果它包含'name','lname'和'id',你需要以某種方式從'nmm'中提取那些。但我們無法幫助你,因爲我們不知道這個'nmm'的格式。 – 2010-05-20 10:40:26
再次我得到理智的錯誤,當分配到objectAtIndex的文本框:0 – xcodemaddy 2010-05-20 10:58:06