ios objective-c nsstring uilabel nsmutableattributedstring

ios - Convertir NSMutableAttributedString a NSString



objective-c uilabel (3)

¿No podemos convertir NSMutableAttributedString en NSString ?

Tengo dos NSMutableAttributedStrings y estoy agregando la segunda cadena a la primera como se muestra a continuación:

[string1 appendAttributedString:string2];

Como tengo que mostrar string1 en una etiqueta, hago:

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

Recibo el error "unrecognized selector sent to instance" .

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


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

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

En el momento del análisis obtuve una excepción porque NSMutableAttributedString contiene información sobre otros atributos, como el color space . Por eso no se analizará.

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

// "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];


No se puede usar una conversión para convertir un objeto de un tipo a otro. Utilice el método proporcionado:

self.label1.text = [string1 string];

Mejor aún, use la cadena atribuida:

self.label1.attributedText = string1;


NSAttributtedString incluye una propiedad .string . A partir de ahí, puede tomar NSString sin atributos.

Asi que:

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