2013-10-11 11 views
26

Czy możemy nie przekonwertować NSMutableAttributedString na NSString?Konwertuj NSMutableAttributedString na NSString

Mam dwa NSMutableAttributedStrings i jestem dołączając 2nd ciąg na 1 jak poniżej:

[string1 appendAttributedString:string2];

Ponieważ mam do wyświetlania łańcuch1 na etykiecie zrobić:

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

jestem uzyskanie błędu "unrecognized selector sent to instance".

Czy robię coś złego tutaj? Czy nie jest to właściwy sposób przypisania NSMutableAttributedString do właściwości tekstowej etykiety?

Odpowiedz

67

Nie można użyć rzutowania w celu przekształcenia obiektu z jednego rodzaju na inny. Użyj dostarczonego metodę:

self.label1.text = [string1 string]; 

Jeszcze lepiej użyć nadany ciąg:

self.label1.attributedText = string1; 
+0

Tak po prostu sobie sprawę, że wytwórnia attributedText własności, jak również. Dzięki za odpowiedź !! :) –

0

Oprócz użytkownika @ rmaddy odpowiedź, mój przypadek jest tutaj inna.

Właściwie użyłem NSMutableAttributedString w parsowaniu JSON, aby wysłać szczegóły na serwerze.

W czasie analizowania otrzymałem wyjątek, ponieważ NSMutableAttributedString zawiera również informacje o innych atrybutach, takich jak color space. Z tego powodu nie będzie parsować.

Próbowałem wiele innych sposobów, ale w końcu rozwiązanie, aby uzyskać ciąg za pomocą poniższego kodu:

// "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 zawiera właściwość .string. Stamtąd możesz wziąć NSString bez atrybutów.

Więc:

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

Uratowałeś mnie, kolego. Przepraszam, stackoverflow nie pozwala mi upowszechniać tego więcej niż jeden. – iNasir

Powiązane problemy