我们不能将NSMutableAttributedString
转换为NSString
吗?
我有两个NSMutableAttributedStrings
,我将第二个字符串附加到第一个字符串,如下所示:
[string1 appendAttributedString:string2];
因为我必须在标签上显示string1:
self.label1.text = (NSString *)string1;
我收到"unrecognized selector sent to instance"
错误。
我在这里做错了吗?这不是将NSMutableAttributedString
分配给标签的文本属性的正确方法吗?
答案 0 :(得分:71)
您无法使用强制转换将对象从一种类型转换为另一种类型。使用提供的方法:
self.label1.text = [string1 string];
更好的是,使用属性字符串:
self.label1.attributedText = string1;
答案 1 :(得分:14)
NSAttributtedString
包含.string
属性。从那里,你可以不带属性NSString
。
所以:
NSAttributtedString* someString;
NSString* string = someString.string;
答案 2 :(得分:0)
除了@ rmaddy的答案之外,我的情况与此不同。
实际上我在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];
答案 3 :(得分:0)
NSAttributtedString具有属性字符串,它是只读属性,您不能更改它。
NSAttributtedString* attributtedString;
NSString* plainString = attributtedString.string;