2012-05-02 2 views
0

Когда я делаю NSLog содержания моего NSMutableArray, он возвращает:ObjectAtIndex вызывает приложение к краху

(
    hat, 
    hat 
) 

Так почему же, когда я делаю NSLog как так NSLog(@"%@", [pro.matches objectAtIndex:0]); она падает с ошибкой: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'

Так странно

Это где я заполняю его:

[self.matches removeAllObjects]; 

     NSArray *JSONarray = [[NSArray alloc] initWithArray:[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]]; 
     int i; 

     for (i=0; i<[JSONarray count]; i++) { 
      //[self.matches addObject:[JSONarray objectAtIndex:i]]; 
      [self.matches addObject:@"hat"]; 
     } 
     //NSLog(@"boys with bo%@", [[matches objectAtIndex:1] objectForKey:@"host"]); 
     block(); 
     //JSON and add to matches. 
    } 
    }]; 
    block(); 

и это, где я называю это:

[pro refreshMatchesWithCallback:^ 
    { 
     //[self.tableView reloadData]; 
     NSLog(@"the count of a lifetime is %@", [pro.matches objectAtIndex:0]); 
    }]; 
+2

Это не достаточно кода, чтобы увидеть, что это неправильно. Не могли бы вы предоставить еще какой-нибудь код? Например, где вы создаете/заполняете массив? – Manuel

+2

Когда вы печатаете содержимое массива по мере того, как вы отправляете сообщение, какой ваш вызов «NSLog» для этого? И, как говорит @ dragon112, разместите больше кода, чтобы мы могли видеть, как ваш массив создается. –

+0

@michaela, в котором класс u делает NSlog plus, скажите мне, что является senerio приложения ru, используя любой sorta push pop, плюс то, что я могу придумать, это то, что u должен устанавливать массив для pro-объекта класса , (но все это зависит от senerio приложения ur) – WaaleedKhan

ответ

1

При первом входе содержимого он не имеет ничего из-за способом заканчивания блоки работают, попробуйте это:

[pro refreshMatchesWithCallback:^ 
{ 
    //[self.tableView reloadData]; 
    if(pro.matches.count > 0) { 
     NSLog(@"the count of a lifetime is %@", [pro.matches objectAtIndex:0]); 
    } 
}]; 

Надеется, что это помогает!

Сэм

0
always prefer to use this approach 

for(Object* obj in arra) 
{ 
... 

} 

это будет входить в цикле, если счетчик больше 0. проверка не требуется

Cheerz: P

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