2010-11-30 34 views
0

Mes yeux me faisaient mal à force d'essayer de comprendre celui-ci - et j'ai cherché une réponse pendant un bon moment en ligne (ce sera embarrassant de dire combien ...). tout ce que j'essaie de faire est d'énumérer en utilisant une boucle for-in sur une expression qui est un NSMutableArray qui contient NSNumbers et NSStrings. mon impression NSLog pour la variable et renvoie une chaîne vide. Qu'est-ce que je fais de mal?Construire un NSstring sur un NSMutableArray

NSString *ans = @""; 
    for (id obj in anExpression) 
    { 
     if ([obj isKindOfClass:[NSString class]]) 
      [ans stringByAppendingString:(NSString *)obj]; 
     if ([obj isKindOfClass:[NSNumber class]]) 
      [ans stringByAppendingString:(NSString *)[obj stringValue]]; 

     NSLog(@"String so far: %@ ", ans); 
    } 

Répondre

0

Hey, désolé pour le mauvais format de codage, affichant à nouveau ...

NSString *ans = @""; 
for (id obj in anExpression) 
{ 
    if ([obj isKindOfClass:[NSString class]]) 
     [ans stringByAppendingString:(NSString *)obj]; 
    if ([obj isKindOfClass:[NSNumber class]]) 
     [ans stringByAppendingString:(NSString *)[obj stringValue]]; 

    NSLog(@"String so far: %@ ", ans); 
} 
[ans autorelease]; 
NSLog(@"final string is: %@ ", ans); 

return ans; 
+0

i modifié votre original, ce n'est pas nécessaire. –

+0

Le '[ans autorelease];' est incorrect - 'ans' n'a jamais été' alloc'-ed, et l'objet renvoyé par 'stringByAppendingString:' ne devrait pas être libéré. –

+0

OK, merci. Quant au problème principal que je rencontre - ne pas pouvoir remplir le NSString avec les objets que j'ai dans le tableau - en avez-vous une idée? – Joe

2

Je pense que vous voulez dire

ans = [ans stringByAppendingString:(NSString *)obj]; 

pas seulement

[ans stringByAppendingString:(NSString *)obj]; 

NSStrings sont immuables - vous ne pouvez pas les ajouter. -stringByAppendingString: renvoie une nouvelle chaîne (que vous pouvez ensuite affecter à ans). Vous pouvez également utiliser un NSMutableString et la méthode -appendString:.

0

La méthode stringByAppendingString: renvoie une nouvelle chaîne créée en ajoutant la chaîne donnée au récepteur.

si vous voulez ans = [ans stringByAppendingString:obj];