2011-02-23 7 views
2

J'ai une classe personnalisée nommée Profile et une NSMutableArray que j'ajoute les objets de profil au cas où je devrais aller et venir dans une itération.Ajout de nouveaux objets à un NSMutableArray

Le code est la suivante:

@try { 
    currentProfile = (Profile *) [cache objectAtIndex:(int)currentPosition-1]; 
} 
@catch (NSException * e) { 
    Profile *cached = [[Profile alloc] init]; 
    [cached loadProfile:currentPosition orUsingUsername:nil appSource:source]; 
    cached.position = NULL; 
    [cache addObject:cached]; 
    currentProfile = cached; 
    [cached release]; 
} 

//And the "log" i use to show the error 
Profile *temp; 
for (int i=0; i<[cache count]; i++) { 

    temp = (Profile *) [cache objectAtIndex:(int)currentPosition-1]; 
    NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId); 
} 
[temp release]; 

Le NSLog me retournaient longueur de temps de cache avec le même objet. C'EST À DIRE.
pour len = 1: premier - 1 e 1

pour len = 2:
secondes - 2 e 2
secondes - 2 e 2

pour len = 3:
troisième - 3 e 3
troisième - 3 e 3
troisième - 3 e 3

et ainsi de suite ...
et ce que j'ai besoin est:
pour len = 3:
premier - 1 e 1
seconde - 2 e 2
troisième - 3 e 3

Répondre

3

Vous voulez probablement utiliser la variable i dans la boucle, au lieu de currentPosition

for (int i=0; i<[cache count]; i++) { 
    temp = (Profile *) [cache objectAtIndex:i]; 
    NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId); 
} 

Sinon, vous récupérez toujours le même objet.

Vous pouvez également considérer 'pour chaque' boucle au lieu d'un simple 'pour'. Juste pour la simplicité.

for (Profile *temp in cache) { 
    NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId); 
} 
+1

^^ vous avez répondu plus vite, pas besoin de 2 fois le même poste le mien suppression –

+0

@ Jason Consultez [stackapps] (http://stackapps.com/), ils ont des services de notification utiles :) –

+0

Dieu, merci !! C'était rapide et très utile. Et je me sens stupide = ( –

Questions connexes