2013-03-21 50 views
0

我有这个ImportViewController.m由于未捕获异常'NSRangeException'而终止应用程序。 [__NSArrayM objectAtIndex:]:索引33越界[0 .. 32]'

我从服务器提取和加载XML名称。 元件的总数是33。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.title = @"IMPORT"; 
    NSLog(@"User id = %@",currentUserId); 

    //some code to send http request............. 
    NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
    NSLog(@"str response:%@",str); 
    NSURL *fileURL= [[NSURL alloc] initWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    NSData *xmlData = [[NSMutableData alloc] initWithContentsOfURL:fileURL]; 
    GDataXMLDocument *doc =[[GDataXMLDocument alloc] initWithData:xmlData options:0 error:nil]; 

    NSArray * names = [doc nodesForXPath:@"//contacts/contact/name/firstname" error:nil]; 

    for (GDataXMLElement *element in names) { 
     // NSLog(@"name: %@ ",element.stringValue); 
     [Option addObject:element.stringValue]; 
    } 

    [Option addObject:@"nil"]; 
    NSLog(@"count: %u ",[Option count]); 

    for (CFIndex i=0; i<=[Option count]; i++) { 
     NSLog(@"options item %lu: %@\n",i,Option[i]); 
    } 
} 

错误:终止应用程序由于未捕获的异常 'NSRangeException',原因: '* - [__ NSArrayM objectAtIndex:]:索引33超出范围[0 .. 32]' *第一掷调用堆栈:

回答

4

你行

for (CFIndex i=0; i<=[Option count]; i++) 

应该读

for (CFIndex i=0; i<[Option count]; i++) 
+0

+1极好的速度 – 2013-03-21 06:40:45

+0

Ahsan:'count'给出了总数,而数组的最后一个元素的索引只有一个小一点。 – 2013-03-21 06:42:02

+0

哦谢谢。有效。非常基本的错误之一。 – 2013-03-21 06:43:20

相关问题