【问题标题】:Convert NSMutableAttributedString to NSString将 NSMutableAttributedString 转换为 NSString
【发布时间】:2013-10-19 01:08:59
【问题描述】:

我们不能将NSMutableAttributedString 转换为NSString 吗?

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

[string1 appendAttributedString:string2];

因为我必须在标签上显示 string1,所以我这样做:

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

我收到"unrecognized selector sent to instance" 错误。

我在这里做错了吗?这不是将NSMutableAttributedString 分配给标签的文本属性的正确方法吗?

【问题讨论】:

    标签: ios objective-c nsstring uilabel nsmutableattributedstring


    【解决方案1】:

    您不能使用强制转换将对象从一种类型转换为另一种类型。使用提供的方法:

    label1.text = [string1 string];
    

    更好的是,使用属性字符串:

    label1.attributedText = string1
    

    【讨论】:

    • 是的,我刚刚意识到标签也具有属性文本属性。感谢您的回复!! :)
    【解决方案2】:

    NSAttributtedString 包含一个 .string 属性。从那里,您可以使用不带属性的NSString

    所以:

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

    【讨论】:

    • 你救了我,伙计。抱歉,stackoverflow 不允许我投票超过一个。
    • 我同意。我希望我可以多次投票。这大大简化了我的代码。
    【解决方案3】:

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

    NSAttributtedString* attributtedString;
    NSString* plainString = attributtedString.string;
    

    【讨论】:

      【解决方案4】:

      除了@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];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 2017-03-08
        • 2016-01-17
        • 2012-02-29
        • 2011-02-04
        • 2011-04-24
        相关资源
        最近更新 更多