2010-05-20 81 views
0

在此行中获取错误:问题与阵列

NSString *nmm =[narr objectAtIndex:1]; 

错误显示:

'NSRangeException',原因:“*** - [NSCFArray objectAtIndex:]:索引 (1) (1)'

回答

1

它看起来像你的数组只有一个值(你可以在索引0,而不是索引1访问)。

+0

是......谢谢。这显示数据,但我不能分配给文本框。 code here。 NSString * nmm = [narr objectAtIndex:0]; \t \t nametxt.text = ???; 这个nmm保存名字,lname和id,我想在文本框中显示它 – xcodemaddy 2010-05-20 10:19:33

+0

'nmm'是一个'NSString',所以如果它包含'name','lname'和'id',你需要以某种方式从'nmm'中提取那些。但我们无法帮助你,因为我们不知道这个'nmm'的格式。 – 2010-05-20 10:40:26

+0

再次我得到理智的错误,当分配到objectAtIndex的文本框:0 – xcodemaddy 2010-05-20 10:58:06

1

您应该从运行时检查narr的内容开始。这听起来像内容不是你期望他们在执行期望的点。右键你在你的问题发布前行,使用的NSLog通话记录的数组的内容是这样的:

NSLog(@"Contents of array: %@", narr); 

然后运行应用程序并检查控制台错误发生之后。花一些时间学习如何使用NSLog,断点和GDB控制台 - 它们最终会在调试时节省大量的挫折。

您对unset的回答提出了另一个观点:为什么要在同一个字符串中存储多个数据片段?把name,lnameid分离成单独的字符串并将每个字符串放到它自己的数组单元中是不是更容易?然后,您可以使用[narr objectAtIndex:]访问它们,而无需担心每次需要这些信息时都要解析字符串。

+0

NSMutableArray * narr = [[NSMutableArray alloc] initWithArray:[my readItems:n]]; 即时通讯从另一个类的“readItems”数据库中提取数据。这将返回数组,我将它存储在'narr'这个类中。现在我想显示'narr'.im在这里得到错误[narr objectAtIndex:1]的数据。 – xcodemaddy 2010-05-21 04:45:29

+0

我明白你想要做什么,但是你会遇到一个越界错误,这意味着数组'narr'几乎肯定不包含你认为它所做的事情。使用我描述的NSLog方法将允许您在运行时真正看到该数组的内容。看到你之前评论过的(在unset的回答下),对[narr objectAtIndex:0]的调用给出同样的错误,我猜测'narr'可能是空的,并且这个错误在于它的初始化。 – Endemic 2010-05-21 15:32:32