64 votes

Objectif C : convertir une NSMutableString en NSString

J'ai une NSMutableString, comment puis-je la convertir en NSString ?

97voto

Regexident Points 17722

Soit via :

NSString *immutableString = [NSString stringWithString:yourMutableString];

ou via :

NSString *immutableString = [[yourMutableString copy] autorelease];
//Note that calling [foo copy] on a mutable object of which there exists an immutable variant
//such as NSMutableString, NSMutableArray, NSMutableDictionary from the Foundation framework
//is expected to return an immutable copy. For a mutable copy call [foo mutableCopy] instead.

Etant une sous-classe de NSString, vous pouvez simplement le convertir en NSString.

NSString *immutableString = yourMutableString;

ce qui lui donne l'air d'être immuable, alors qu'il reste en fait mutable.
De nombreuses méthodes renvoient en fait des instances mutables alors qu'elles sont déclarées comme devant renvoyer des instances immuables.

4voto

Jose Ibanez Points 1767

NSMutableString est une sous-classe de NSString On peut donc se contenter d'en faire un type de casting :

NSString *string = (NSString *)mutableString;

En l'occurrence, string serait un alias de mutalbeString mais le compilateur se plaindrait si vous essayiez d'appeler des méthodes mutables.

Vous pouvez également créer une nouvelle NSString avec la méthode class :

NSString *string = [NSString stringWithString:mutableString];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X