38

我们不能转换NSMutableAttributedStringNSString?

我有两个NSMutableAttributedStrings,我将第二个字符串附加到第一个字符串,如下所示:

[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 回答
0

NSAttributtedString 有一个属性字符串,它是只读属性,您不能更改它。

NSAttributtedString* attributtedString;
NSString* plainString = attributtedString.string;
于 2020-02-20T12:59:33.697 回答
-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 回答