Codierung NSAttributedString wirft Fehler
Basierend auf der akzeptierten Antwort aufdiese Frage Ich habe folgenden Code geschrieben:
<code>NSData* somedata; somedata=[NSKeyedArchiver archivedDataWithRootObject:ts]; </code>
Dabei ist ts ein NSAttributedString, der mit Text und einigen Attributen (in diesem Fall Farben) gefüllt ist.
Wenn ich diesen Code ausführe, erhalte ich folgende Fehlermeldung:
<code>*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType encodeWithCoder:]: unrecognized selector sent to instance 0x6eb5b90' </code>
Ich bin neu in der NSCoder-Arena, aber die Antwort auf die oben genannte Frage ließ es so erscheinen, als ob dies alles ist, was ich tun muss. Ist es? Habe ich etwas verpasst?
BEARBEITEN:
Der nicht erkannte Selektor wird in diesem Fall an ein Farbattribut im NSAttributedString gesendet. Wenn ich den String wie folgt initialisiere:
<code>NSAttributedString *ts = [[NSAttributedString alloc] initWithString:text attributes:self.currentAttributeDictionary]; </code>
Das Wörterbuch ist so aufgebaut:
<code>self.currentAttributeDictionary=[NSDictionary dictionaryWithObjectsAndKeys: [self.currentColor CGColor],(NSString*)kCTForegroundColorAttributeName, nil]; </code>
Und ein NSLog des Wörterbuchs ergibt dies:
<code>New dictionary is: { CTForegroundColor = "<CGColor 0x6eb5b90> [<CGColorSpace 0x6e968c0> (kCGColorSpaceDeviceRGB)] ( 1 1 0 1 )";} </code>
Die Adresse von CGColor oben stimmt mit der Adresse in der Fehlermeldung überein.