2013-03-21 2 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 превосходная скорость –

+0

Ahsan: 'count' дает общее количество, в то время как индекс последнего элемента массива в одном меньшем, чем это. –

+0

ой спасибо. это сработало. одна из самых простых ошибок. –

Смежные вопросы

 Смежные вопросы