2013-10-11 17 views
26

Können wir NSMutableAttributedString nicht in NSString konvertieren?NSMutableAttributedString in NSString konvertieren

Ich habe zwei NSMutableAttributedStrings und ich bin die 2. Saite auf 1. anhängt wie folgt:

[string1 appendAttributedString:string2];

Da ich Zeichenfolge1 auf einem Etikett anzuzeigen habe ich zu tun:

self.label1.text = (NSString *)string1; 

Ich bin bekommen "unrecognized selector sent to instance" Fehler.

Mache ich hier etwas falsch? Ist das nicht der richtige Weg, um einer Texteigenschaft eines Labels eine NSMutableAttributedString zuzuweisen?

Antwort

67

Sie können einen Cast nicht verwenden, um ein Objekt von einem Typ in einen anderen zu konvertieren. Verwenden Sie die mitgelieferte Methode:

self.label1.text = [string1 string]; 

Noch besser wäre es, verwenden Sie die zugeschrieben string:

self.label1.attributedText = string1; 
+0

Ja, ich habe gerade das Label als auch attributedText Eigenschaft hat. Danke für die Antwort !! :) –

0

Neben @ rmaddy Antwort, ist mein Fall hier anders.

Eigentlich habe ich NSMutableAttributedString in JSON Parsing verwendet, um Details auf dem Server zu senden.

Zum Parsen Zeit habe ich eine Ausnahme, weil NSMutableAttributedString Informationen über andere Attribute enthält, wie color space. Aus diesem Grund wird es nicht analysieren.

Ich habe versucht, viele andere Möglichkeiten, aber schließlich Lösung Zeichenfolge mit folgendem Code zu erhalten habe:

// "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]; 
10

NSAttributtedString eine Eigenschaft .string enthält. Von dort können Sie NSString ohne Attribute nehmen.

So:

NSAttributtedString* someString; 
NSString* string = someString.string; 
+0

Du hast mir Kumpel gerettet. Entschuldigung stackoverflow erlaubt mir nicht, mehr als eine zu verbessern. – iNasir

Verwandte Themen