Objectif C - NSArray et Pour la structure de boucle
Des travaux dans la voie de l'apprentissage Objective C, mais je suis de retour maintenant et ce qui a été me rend fou.
C'est mon code:
i=0;
for (i=0;[photoList count]; i++) {
NSLog(@"%i",i);
NSLog(@"%@",[photoList objectAtIndex:i]);
NSString *fileName = [photoList objectAtIndex:i];
sendImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]];
UIImageWriteToSavedPhotosAlbum(sendImage,self,@selector(savedPhotoImage:didFinishSavingWithError:contextInfo:),NULL);}
photoList est juste un NSArray comme ça, sauf avec 24 objets:
NSArray* photoList = [NSArray arrayWithObjects:@"Photo 1.jpg",
@"Photo 2.jpg",
@"Photo 3.jpg",
@"Photo 4.jpg",nil];
Il fonctionne... Il copie les photos de la pellicule... et puis se bloque avec
2010-07-24 19:34:36.116 iCardz2go Poindexter[29662:207] * fin de l'app en raison de uncaught exception 'NSRangeException', la raison: '* -[NSArray objectAtIndex:]: index 24 au-delà des limites [0 .. 23]'
J'ai essayé différentes configurations telles que
for (i=0;1<23; i++)
seulement pour obtenir
2010-07-24 19:51:01.017 iCardz2go Poindexter[29908:207] *** fin de l'app en raison de uncaught exception 'NSInvalidArgumentException', la raison: '+[NSInvocation invocationWithMethodSignature:]: signature de la méthode argument ne peut pas être nul'
Donc, c'est la lecture du néant et de la passer.
Je sais que sa va être quelque chose de vraiment simple, que j'ai oublié. Pourquoi ne pas sauter hors de la boucle à la Photo 23 (le comte)?
Votre aide est grandement appréciée!
P
- Comment peut-comte 23 s'il y a 24 objets?
- Vous devez résoudre un tutoriel dans le langage de programmation C que il faut espérer couvrir des constructions telles que des boucles. Objective-C est tout à fait une couche mince sur le dessus de C, afin de vous familiariser avec C permettra de vous familiariser avec Objective-C également.
- Marcelos - Parce que j'ai pensé à un NSArray numérotés à partir de 0... n'est-ce pas?
- Valide les indices vont de 0 à 23, mais le compte est toujours de 24.
Vous devez vous connecter pour publier un commentaire.
Pour les boucles en C et Objective-C ressembler à ceci:
initialization
est l'endroit où vous configurez la boucle; c'est là où vous lui dites ce que pour commencer avec.condition
est testé pour chaque itération, y compris le premier; si lecondition
évalue à true, le corps de la boucle est exécuté. À la fin de chaque itération,increment
est évaluée.Donc:
Va imprimer les numéros de 0 à 9. Ce que vous voulez probablement pour le vôtre est:
Remarque l'affectation de
count
en dehors de la boucle; c'est tout simplement une optimisation de sorte que la boucle n'a pas à envoyer un message supplémentaire pour chaque itération (vous pouvez tout aussi facilement fairei < [photoList count]
.)T-il m'aider?
-savedPhotoImage:didFinishSavingWithError:contextInfo:
? Vous devez vous assurer que sa mise en œuvre.Pourquoi n'essayez-vous pas rapide énumération?
À la fois pour la boucle conditions —
[photoList count]
et1<23
— toujours évaluer àtrue
. Essayezi < [photoList count]
. Mieux encore, utilisez @Eimantas de réponse.À partir de votre code:
La condition
[photoList count]
est toujours vrai.Je n'ai pas lu toute la discussion, si.
Changer votre pour instruction for(i=0; i<[photoList count]; i++)