Konvertieren NSAttributedString zu string und zurück
Habe ich NSString und ich brauche, um NSAttributedString.
NSString ist so etwas wie:
bvcx b vcxbcvx bcxvbcxv bvx xbc bcvx bxcv bcxv bcxv bcxv bcvx bcvx bcxvbcvx bvc bcvx bxcv{
NSFont = "\"LucidaGrande 24.00 pt. P [] (0x108768a80) fobj=0x108788880, spc=7.59\"";
NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0.05, HeaderLevel 0";
}
Es ist NSAttributedString in UTF-8. Gibt es eine Möglichkeit, wie das zu tun?
Sind Sie auf der Suche nach
NÖ, ich brauche formatiert nsattributestring. Thx für das Interesse.
Wo habt Ihr
Ein NSString ist nicht UTF8. Ihr string scheint die Ausgabe von irgendeiner Art von Textverarbeitungs-Programm (möglicherweise sogar die
Oder, alternativ, tun
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"foo"];
?NÖ, ich brauche formatiert nsattributestring. Thx für das Interesse.
Wo habt Ihr
NSString
Inhalte kommen aus?Ein NSString ist nicht UTF8. Ihr string scheint die Ausgabe von irgendeiner Art von Textverarbeitungs-Programm (möglicherweise sogar die
description
Ausgang für einen NSAttributedString -- ich habe noch nie gesehen, dass), und Sie müssen verstehen, dass format zu umgehen (wenn es nicht bereits eine zugeschrieben string). Es gibt keine "automatischen" Mechanismus in Objective-C, Ausführung der übersetzung.Oder, alternativ, tun
NSLog(@"The class is %s", object_getClassName(myFunnyString));
, und sehen, was Klasse name gedruckt wird.InformationsquelleAutor Michal Jurník | 2013-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sagte Sie, Sie erstellt Ihre Eingabe string aus einem vorhandenen
NSAttributedString
wie diese:Den
%@
Formatbezeichner sendet diedescription
Nachricht an diensattributedstring
Objekt. Diedescription
Methode ist nicht entworfen, um zu produzieren eine Zeichenfolge, die leicht umgewandelt zurück auf eineNSAttributedString
Objekt. Es ist entworfen, um Programmierern zu helfen Ihren code Debuggen.Den Prozess der Konvertierung eines Objekts in einen string, oder ein array von bytes, so dass es umgewandelt werden kann zurück zu einem Objekt, das später genannt wird Serialisierung. Mit
%@
oder diedescription
Methode ist in der Regel nicht ein guter Weg, um ausführen die Serialisierung. Wenn Sie wirklich wollen, zu Deserialisieren der string erstellt von derdescription
Methode, Sie müssen schreiben Sie Ihre eigenen parser. Soweit ich weiß, gibt es keine API dafür.Statt, Kakao bietet ein system entwickelt, um serialisieren und Deserialisieren von Objekten. Objekte, die serialisiert werden kann, die mit diesem system konform zu den
NSCoding
Protokoll.NSAttributedString
Objekte entsprechenNSCoding
. So versuchen serialisieren Ihr original zurückgeführt string auf diese Weise:Speichern
data
(das ist nicht human-readable Binär, nicht UTF-8), wo immer Sie Sie benötigen. Wenn Sie müssen wieder zurückgeführt string:Wenn Sie die Programmierung für OS X (nicht iOS) haben Sie eine alternative. Sie können aus einer attributierten string in das RTF - (rich text format), das ist ziemlich Menschen-lesbar, mit der
RTFFromRange:documentAttributes:
Methode (was weglässt Anlagen) oder dieRTFDFromRange:documentAttributes:
Methode (einschließlich Anhänge). Dann können Sie die RTF-Daten zurück in ein attributiertes string mitinitWithRTF:documentAttributes:
oderinitWithRTFD:documentAttributes:
. Diese Methoden sind nicht auf iOS verfügbar.Wenn Sie die Programmierung für iOS 7.0 oder höher, die Sie verwenden können
-dataFromRange:documentAttributes:error:
oderfileWrapperFromRange:documentAttributes:error:
zu konvertieren, zugeschrieben string RTF/RTFD. Sie müssenNSDocumentTypeDocumentAttribute
zuNSRTFTextDocumentType
oderNSRTFDTextDocumentType
im Dokument-Attribute. VerwendeninitWithData:options:documentAttributes:error:
oderinitWithFileURL:options:documentAttributes:error:
zu konvertieren zurück zu einemNSAttributedString
. Diese Methoden sind Teil des NSAttributedString UIKit Ergänzungen.Es gibt keine solche Sache als "UTF-8 NSAttributedString". Einen NSAttributedString ist ein string plus Attribute; Sie können encode beliebige Zeichenkette als UTF-8-Daten, aber Sie haben noch zu serialisieren Attribute getrennt, und dann Deserialisieren,/decodieren Sie beide, und setzen Sie Sie wieder zusammen am anderen Ende. Verwenden Sie das RTF-Methoden; Sie sind konzipiert für dieses.
Thx für die gute Idee 😉
Als ich versuchte, bekam ich diese Fehlermeldung - Wie Sie es beheben - [NSConcreteMutableAttributedString _encodingCantBeStoredInEightBitCfstring]: unrecognized selector geschickt Instanz 0xf078af0 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteMutableAttributedString _encodingCantBeStoredInEightBitCfstring]: unrecognized selector geschickt Instanz 0xf078af0'
Sie müssen die post dies als eine neue Frage. Fügen Sie Ihrem code und die details der Zeichenfolge, die Sie versuchen, zu serialisieren.
InformationsquelleAutor rob mayoff