concaténer deux NSString
ancrou
Membre
Je voudrais concaténer deux NSString
Je fais :
ça marche mais ça me semble bizarre ???
Je fais :
NSString* s1 = = [[[NSString alloc] init] autorelease];<br />s1 = [NSString stringWithFormat:@"%s blabla blaba \n",[s1 UTF8String]];
ça marche mais ça me semble bizarre ???
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ton premier [[[NSString alloc] init] autorelease]; ne sert à rien.
Il existe la méthode stringByAppendingString
Déjà , au lieu de %s il y a %@ qui permet de donner directement un objet (utilise la méthode "description")
Ensuite, quand on veut faire beaucoup de modifications, on utilise NSMutableString qui a toutes les méthodes qu'il faut pour ça
Merci
Je n'ai pas besoin de faire une allocation d'un String !
Pourquoi elle ne sert pas ?
Merci
Qu'entendez vous par "beaucoup de modifications" ?
Je devrais utiliser NSMutableString pour une simple concaténation ?
Non, quand il y a beaucoup de concaténations...
Parce que la méthode stringWithFormat est ce qu'on appelle une "Convenient Method", c'est-à -dire un raccourci pour
[[[NSString alloc] initWithFormat:@...,..] autorelease];
NSString * string=[NSString stringWithFormat:"%@ blabla",otherString];
ou
NSString * string=[otherString stringByAppendingString:@ blabla];
NSMutableString * string=[NSMutableString stringWithFormat:"%@ blabla",OtherString];
stringByAppendingString est également une "Convenient Method" en mode autorelease donc.
Mais si je met des accents, j'ai un warning :
Il n'y a pas un encoding:NSISOLatin1StringEncoding à faire ?
mais où et comment ?
Non, ça ne va toujours pas, car s1 n'est pas initialisé, donc t'appelles ton truc sur "nil", ce qui va renvoyer "nil".
Pour les accents, ça a été traité de nombreuses fois ici... Pas d'accents dans du code, que de l'ASCII ; pour mettre des accents, il y a d'autres techniques (séquences d'échappement, fichier localisés etc.)
Pour les accents j'entends parler de localized.strings
Je vais l'initialiser comme au début.
Pour les chaà®nes avec accent : sujet récent en causant
Le cas où y'a eu la même confusion du alloc et de l'appel d'une méthode de classe sur une variable au lieu de le faire sur la classe : c'est là