2010-05-20 4 views
0

erreur est survenue lors de cette ligne:problème avec tableau

NSString *nmm =[narr objectAtIndex:1]; 
erreur

montre:

'NSRangeException', raison: « *** - [NSCFArray objectAtIndex:]: indice (1) Au-delà des limites (1) '

Répondre

1

Il semble que votre tableau ne possède qu'une seule valeur (à laquelle vous pouvez accéder à l'index 0, pas à l'index 1).

+0

Oui ... Merci. ceci montre des données mais je ne peux pas assigner à la zone de texte. code ici NSString * nmm = [narr objectAtIndex: 0]; \t \t nametxt.text = ???; ce nmm contient le nom, lname et id, je veux l'afficher dans les zones de texte – xcodemaddy

+0

'nmm' est un' NSString', donc s'il contient 'name',' lname' et 'id', vous devrez extraire ceux de 'nmm' d'une manière ou d'une autre. Mais nous ne pouvons pas vous aider avec cela car nous ne connaissons pas le format de ce 'nmm'. –

+0

encore une fois je reçois une erreur saine lors de l'affectation à la zone de texte à partir objectAtIndex: 0 – xcodemaddy

1

Vous devriez probablement commencer par vérifier le contenu de narr lors de l'exécution. Il semble que le contenu ne soit pas ce que vous attendez d'eux au point d'exécution souhaité. Juste avant la ligne que vous avez publié dans votre question, utilisez un appel NSLog pour connecter le contenu du tableau comme celui-ci:

NSLog(@"Contents of array: %@", narr); 

Lancez ensuite l'application et vérifiez la console après l'erreur survient. Prenez le temps d'apprendre à utiliser NSLog, les points d'arrêt et la console GDB - ils vous épargneront beaucoup de frustration lors du débogage.

Vos commentaires sur la réponse de unset soulèvent un autre point: Pourquoi stockez-vous plusieurs données à l'intérieur d'une même chaîne? Ne serait-il pas plus facile de séparer name, lname et id en chaînes séparées et de les placer chacune dans sa propre cellule de tableau? Ensuite, vous pouvez y accéder en utilisant [narr objectAtIndex:] sans avoir à vous soucier d'analyser la chaîne chaque fois que vous avez besoin d'un de ces éléments d'information.

+0

NSMutableArray * narr = [[NSMutableArray alloc] initWithArray: [mon readItems: n]]; Im récupérer des données de la base de données dans "readItems" dans une autre classe. ceci retourne le tableau que je m stockant dans 'narr' dans cette classe. Maintenant je veux afficher les données qui sont dans 'narr'.im obtenir l'erreur ici [narr objectAtIndex: 1]. – xcodemaddy

+0

Je comprends ce que vous essayez de faire, mais vous obtenez une erreur hors-limites, ce qui signifie que le tableau 'narr' ne contient presque certainement pas ce que vous pensez qu'il fait. L'utilisation de la méthode NSLog décrite ici vous permettra de voir le contenu de ce tableau au moment de l'exécution. Vu que vous avez commenté plus haut (sous la réponse de unset) qu'un appel à [narr objectAtIndex: 0] donne la même erreur, je devine que 'narr' est probablement vide, et le bug réside dans son initialisation. – Endemic