iOS erreur: [__NSArrayI objectAtIndex:]: indice 1 au-delà des limites [0 .. 0]
Dans mon application, j'ai essayer de charger le contenu d'une url, de les stocker dans une mutable tableau et de les afficher dans un tableau. Mais je ne peux pas le faire, parce que chaque fois que je lance l'application, ce message d'erreur s'affiche:
*** Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(0x34dd088f 0x36d9e259 0x34d2823d 0x316e562f 0x315f09a9 0x313c0c5d 0x313c1b95 0x313c1ae7
0x313c16c3 0xa5cfb 0x33623ec7 0x35387a09 0x35390051 0x33622965 0xa4dc1 0x313a8e33
0x313cd629 0x31391d7d 0x314544dd 0x3139a55d 0x3139a579 0x3139a40b 0x3139a3e7 0x313a8015
0x313a1985 0x3136fc6b 0x3136f70f 0x3136f0e3 0x3439222b 0x34da4523 0x34da44c5 0x34da3313
0x34d264a5 0x34d2636d 0x313a0a13 0x3139de7d 0xa4745 0xa46dc)
terminate called throwing an exception
J'ai créer le tableau que doit remplir le tableau dans mon viewDidLoad avec:
_videos = [[NSMutableArray alloc] init];
Puis-je me connecter à l'url et analyser les reçus de données xml. Cela fonctionne juste comme il se doit. Lorsqu'une balise est ouverte je créer mes objets vidéo et après le remplissage avec les données que j'ai ajouter ces objets de mon tableau avec:
[_videos addObject:currentVideo];
Cela semble fonctionner, parce qu'elle renvoie le nombre correct de vidéos quand
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _videos.count;
}
est appelé. Mais après ce point, l'application se bloque et je n'ai même pas à atteindre le point où j'essaie de remplir mon tableau. La fonction ressemble à ceci:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Video *curVideo = [_videos objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
cell.titleLabel.text = [curVideo title];
cell.descLabel.text = [curVideo desc];
return cell;
}
Ce fais de mal?
Merci d'avance
OriginalL'auteur Bautzi89 | 2012-09-28
Vous devez vous connecter pour publier un commentaire.
Quelque part, vous êtes susceptibles d'accéder
_videos
avant l'initialisation. Très probablement, vous auriez du le faire une foisinit
, mais avant le chargement de la vue. Le correctif de ce genre de problème est d'utiliser des accesseurs exclusivement, et pour les paresseux-initialiserself.videos
. C'est l'une des nombreuses raisons de ne jamais accéder à votre ivars directement à l'exception deinit
etdealloc
.Maintenant toutes les références à
self.videos
sera initialisé, peu importe quand ils se produisent.Vous pouvez aussi initialiser les vidéos correctement dans
init
, ce qui prend un peu moins de code:Placer un point d'arrêt sur les exceptions (developer.apple.com/library/mac/#documentation/ToolsLanguages/...). Voir où le problème est survenu. Regardez ce que
self.videos
est à ce point.Merci cela m'a beaucoup aidé. Il semblait être un problème dans interface builder. Il n'a pas accepté mes modifications, j'ai donc été à l'aide de contenu statique plutôt que dynamique prototypes. J'ai créé un nouveau projet et maintenant tout fonctionne comme il se doit.
OriginalL'auteur Rob Napier
J'ai eu la même erreur de signature
-[__NSArrayI objectAtIndex:]: index 4 beyond bounds [0 .. 1]'
lors de la tentative de présenter un modal Storyboard, la vue de la table avec deux (mise à jour à partir de cinq) statique de la cellule de la table de sections. Cette erreur n'est pas venu jusqu'à ce que j'ai enlevé trois cellule de tableau les sections I n'est plus nécessaire dans la vue. Après vérification de tous mes objectAtIndex références précédant la modale de la présentation à la longueur de deux jours, j'ai décidé de regarder la UITableViewController sous-classe code lui-même. J'ai trouvé ceci:Puis l'ampoule s'éteint. Le
index 4
visé, liées à ma table, vue le nombre de sections et de la limite de[0 .. 1]
visées au courant de mes deux cellule de la table de sections. La mise à jour de lareturn
valeur pour la faire correspondre le nombre de cellule de la table de sections dans le Storyboard de la vue de la table résolu le problème.OriginalL'auteur Tope Oluwole
J'ai passé factice nom de l'image pour les images de tableau comme ceci,
La ligne ci-dessus m'a causé une erreur. J'ai donc modifié @"certains.png" ayant existé image comme @"de la catégorie.png".
C'est travaillé pour moi. Assurez-vous que vous êtes de passage à corriger le nom de l'image à partir de votre bundle.
OriginalL'auteur Narasimha Nallamsetty