2013-10-11 7 views
26

NSMutableAttributedStringNSString으로 변환 할 수 없습니까?NSMutableAttributedString을 NSString으로 변환

나는 두 NSMutableAttributedStrings을하고 난 다음과 같이 1 일에 2 문자열을 추가하고 :

[string1 appendAttributedString:string2];

내가 레이블에 문자열 1을 표시해야하기 때문에 내가 할 :

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

내가 "unrecognized selector sent to instance" 오류가 발생했습니다.

여기에 뭐가 잘못 되었나요? 라벨의 텍스트 속성에 NSMutableAttributedString을 할당하는 올바른 방법이 아닙니까?

답변

67

캐스트를 사용하여 한 유형에서 다른 유형으로 오브젝트를 변환 할 수 없습니다. 제공된 방법을 사용 :

self.label1.text = [string1 string]; 

더 나은 아직이의 기인 문자열 사용 : @ rmaddy의 대답에서 그렇다

self.label1.attributedText = string1; 
+0

그래 난 그냥 라벨뿐만 아니라 속성을 attributedText했다 깨달았다. 대답에 감사드립니다!! :) –

0

을, 내 경우는 여기 다릅니다.

실제로 서버에서 세부 정보를 보내려면 JSON 구문 분석에 NSMutableAttributedString을 사용했습니다.

NSMutableAttributedString에는 color space과 같은 다른 속성에 대한 정보도 포함되어 있기 때문에 구문 분석 할 때 예외가 발생했습니다. 그것 때문에 파싱하지 않을 것이다.

나는 많은 다른 방법을 시도했지만 결국 코드 아래 사용하여 문자열을 얻기 위해 솔루션을 가지고 :

// "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.string 속성을 포함합니다. 여기에서 속성없이 NSString을 사용할 수 있습니다.

그래서 :

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

당신은 나를 친구로 구해줬습니다. 죄송합니다 stackoverflow이 하나 이상의 upvote 허용하지 않습니다. – iNasir