J'ai une NSMutableString, comment puis-je la convertir en NSString ?
Réponses
Trop de publicités?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.
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];