Kodowanie NSAttributesString Throws Error
Na podstawie zaakceptowanej odpowiedzi nato pytanie Napisałem następujący kod:
<code>NSData* somedata; somedata=[NSKeyedArchiver archivedDataWithRootObject:ts]; </code>
gdzie ts jest NSAttributedString, który jest wypełniony tekstem i niektórymi atrybutami (w tym przypadku kolorami).
Gdy wykonam ten kod, otrzymuję ten błąd:
<code>*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType encodeWithCoder:]: unrecognized selector sent to instance 0x6eb5b90' </code>
Jestem nowy na arenie NSCoder, ale odpowiedź na powyższe pytanie sprawiła, że wydaje mi się, że to wszystko, co muszę zrobić. To jest? Przegapiłem coś?
EDYTOWAĆ:
Nierozpoznany selektor w tym przypadku jest wysyłany do atrybutu koloru w łańcuchu NSAttributedString. Kiedy inicjalizuję łańcuch w taki sposób:
<code>NSAttributedString *ts = [[NSAttributedString alloc] initWithString:text attributes:self.currentAttributeDictionary]; </code>
Słownik jest zbudowany w następujący sposób:
<code>self.currentAttributeDictionary=[NSDictionary dictionaryWithObjectsAndKeys: [self.currentColor CGColor],(NSString*)kCTForegroundColorAttributeName, nil]; </code>
I NSLog ze słownika daje to:
<code>New dictionary is: { CTForegroundColor = "<CGColor 0x6eb5b90> [<CGColorSpace 0x6e968c0> (kCGColorSpaceDeviceRGB)] ( 1 1 0 1 )";} </code>
Adres CGColor powyżej odpowiada adresowi w komunikacie o błędzie.