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;