web-dev-qa-db-fra.com

Objectif C: convertir une NSMutableString en NSString

J'ai un NSMutableString, comment puis-je le convertir en NSString?

61
CrazyDev

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.

Étant une sous-classe de NSString, vous pouvez simplement le convertir en NSString

NSString *immutableString = yourMutableString;

le faisant apparaître immuable, même s'il reste en fait mutable.
De nombreuses méthodes retournent en fait des instances mutables bien qu'elles aient été déclarées renvoyer des instances immuables.

95
Regexident

NSMutableString est une sous-classe de NSString, vous pouvez donc simplement la transtyper:

NSString *string = (NSString *)mutableString;

Dans ce cas, string serait un alias de mutalbeString, mais le compilateur se plaindrait si vous tentiez d'appeler des méthodes mutables dessus.

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

NSString *string = [NSString stringWithString:mutableString];
4
Jose Ibanez