2013-10-11 13 views
26

NSMutableAttributedString dosyasını NSString dönüştürebilir miyiz?NSMutableAttributedString öğesini NSString'e dönüştür

Ben iki tane NSMutableAttributedStrings var ve aşağıdaki gibi 1 üzerine 2 dize ekliyorum:

[string1 appendAttributedString:string2];

Bir etikette dize1 gösterilecek beri yapmam:

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

Ben "unrecognized selector sent to instance" hatası alıyor.

Burada yanlış bir şey yapıyorum? Bir etiketin text özelliğine NSMutableAttributedString atamak için doğru yol bu değil mi?

cevap

67

Bir nesneyi bir türden diğerine dönüştürmek için bir yayın kullanamazsınız. sağlanan yöntemi kullanın:

self.label1.text = [string1 string]; 

Daha da iyisi, atfedilen dizeyi kullanın: @ rmaddy cevabı Apart

self.label1.attributedText = string1; 
+0

Evet ben sadece etiket yanı özelliği attributedText etmiştir fark etti. Cevabınız için teşekkürler ama! :) –

0

, mayın kabı burada farklı.

Aslında sunucudaki ayrıntıları göndermek için JSON ayrıştırmada NSMutableAttributedString kullandım.

Ayrıştırma sırasında NSMutableAttributedStringcolor space gibi diğer öznitelikler hakkında bilgi içerdiği için istisna aldım. Bu yüzden ayrıştırmayacak.

ben başka birçok yolu denedim ama sonunda kodunun altına kullanarak dizeyi almak için çözüm var:

// "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 bir .string özelliği içerir. Oradan, NSString öznitelikleri olmadan alabilirsiniz.

Yani:

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

Beni kurtardın dostum. üzgünüm stackoverflow bu benden birden fazlasını yükseltmeme izin vermiyor. – iNasir