Codificación NSAttributedString arroja error
Basado en la respuesta aceptada aesta pregunta Escribí el siguiente código:
<code>NSData* somedata; somedata=[NSKeyedArchiver archivedDataWithRootObject:ts]; </code>
donde ts es una NSAttributedString que se rellena con algún texto y algunos atributos (colores, en este caso).
Cuando ejecuto este código, recibo este error:
<code>*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType encodeWithCoder:]: unrecognized selector sent to instance 0x6eb5b90' </code>
Soy nuevo en la arena de NSCoder, pero la respuesta a la pregunta mencionada hace que parezca que esto es todo lo que tengo que hacer. ¿Lo es? ¿Me he perdido algo?
EDITAR:
El selector no reconocido en este caso se envía a un atributo de color en la NSAttributedString. Cuando inicializo la cadena así:
<code>NSAttributedString *ts = [[NSAttributedString alloc] initWithString:text attributes:self.currentAttributeDictionary]; </code>
El diccionario está construido como tal:
<code>self.currentAttributeDictionary=[NSDictionary dictionaryWithObjectsAndKeys: [self.currentColor CGColor],(NSString*)kCTForegroundColorAttributeName, nil]; </code>
Y un NSLog del diccionario produce esto:
<code>New dictionary is: { CTForegroundColor = "<CGColor 0x6eb5b90> [<CGColorSpace 0x6e968c0> (kCGColorSpaceDeviceRGB)] ( 1 1 0 1 )";} </code>
La dirección del CGColor, arriba, coincide con la dirección en el mensaje de error.