2012-05-02 2 views
0

Quand je fais une NSLog du contenu de mon NSMutableArray, il retourne:objectAtIndex provoque l'application crash

(
    hat, 
    hat 
) 

Alors, pourquoi est-ce que quand je fais un NSLog comme si NSLog(@"%@", [pro.matches objectAtIndex:0]); il se bloque avec l'erreur: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'

si étrange

C'est là que je remplirai:

[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(); 

et c'est là que je l'appelle:

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

Ce n'est pas assez de code pour voir ce qui est faux. Pourriez-vous fournir plus de code? Par exemple où vous créez/remplissez le tableau? – Manuel

+2

Lorsque vous imprimez le contenu du tableau que vous avez posté, quel est votre appel 'NSLog' pour cela? Et, comme le dit @ dragon112, publiez plus de code afin que nous puissions voir votre tableau en cours de création. –

+0

@michaela dans quelle classe vous faites le NSlog plus dites-moi quel est le senerio de l'application ru en utilisant un push pop sorta, plus la chose que je peux penser est que le u doit être le tableau de l'objet pro de la classe , (mais tout dépend du senerio de votre application) – WaaleedKhan

Répondre

1

Lorsque vous connectez le contenu, il n'a rien en raison de la façon dont les blocs d'achèvement travail, essayez ceci:

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

Hope this helps!

Sam

0
always prefer to use this approach 

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

} 

cette entrera en boucle si le compteur est supérieur à 0. aucune vérification nécessaire

Cheerz: P

Questions connexes