Convertir NSMutableAttributedString en NSString

¿No podemos convertir NSMutableAttributedString a NSString ?

Tengo dos NSMutableAttributedStrings y estoy añadiendo la segunda cadena al 1er como se muestra a continuación:

[string1 appendAttributedString:string2];

Como tengo que mostrar string1 en una label, hago lo siguiente:

 self.label1.text = (NSString *)string1; 

Recibo un error de "unrecognized selector sent to instance" .

¿Estoy haciendo algo mal aquí? ¿No es esta la forma correcta de asignar una propiedad NSMutableAttributedString a text de una label?

No puedes usar un yeso para convertir un object de un tipo a otro. Use el método provisto:

 self.label1.text = [string1 string]; 

Mejor aún, use la cadena atribuida:

 self.label1.attributedText = string1; 

NSAttributtedString incluye una propiedad .string . Desde allí, puede tomar NSString sin attributes.

Asi que:

 NSAttributtedString* someString; NSString* string = someString.string; 

Aparte de la respuesta de @ rmaddy, el caso de mi caso es diferente aquí.

En realidad, utilicé NSMutableAttributedString en el análisis JSON para enviar detalles sobre el server.

En el momento del análisis recibí una exception porque NSMutableAttributedString contiene información sobre otros attributes, como el color space . Por eso no se analiza.

Probé muchas otras forms pero finalmente conseguí una solución para get una cadena usando el código siguiente:

 // "amountString" is NSMutableAttributedString string object NSMutableAttributedString *mutableString = (NSMutableAttributedString *)amountString; amountValueString = [mutableString string]; amountValueString = [NSString stringWithFormat:@"%@", amountString]; NSRange fullRange = NSMakeRange(0, amountString.length); NSAttributedString *attStr = [mutableString attributedSubstringFromRange:fullRange]; NSDictionary *documentAttributes = @{NSDocumentTypeDocumentAttribute:NSPlainTextDocumentType}; NSData *textData = [attStr dataFromRange:fullRange documentAttributes:documentAttributes error:NULL]; NSString *amountValueString = [[NSString alloc] initWithData:textData encoding:NSUTF8StringEncoding];