38

に変換できませんNSMutableAttributedStringNSString?

私は2つ持っておりNSMutableAttributedStrings、以下のように2番目の文字列を1番目に追加しています:

[string1 appendAttributedString:string2];

ラベルに string1 を表示する必要があるため、次のようにします。

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

エラーが発生して"unrecognized selector sent to instance"います。

私はここで何か悪いことをしていますか? NSMutableAttributedStringこれは、ラベルのテキスト プロパティに割り当てる正しい方法ではありませんか?

4

4 に答える 4

83

キャストを使用してオブジェクトをある型から別の型に変換することはできません。提供されたメソッドを使用します。

label1.text = [string1 string];

さらに良いことに、属性付きの文字列を使用します。

label1.attributedText = string1
于 2013-10-11T03:45:18.167 に答える
25

NSAttributtedStringプロパティが含まれてい.stringます。そこから、NSString属性なしで取得できます。

そう:

NSAttributtedString* someString;
NSString* string = someString.string;
于 2016-04-14T16:43:13.753 に答える
-1

@rmaddyの答えとは別に、私の場合はここで異なります。

実際NSMutableAttributedString、JSON解析でサーバーに詳細を送信するために使用しました。

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];
于 2016-03-25T14:00:06.183 に答える