面对崩溃来检查NSMutableAttributedString中的特殊字符

时间:2015-06-05 05:47:08

标签: objective-c iphone nsstring nsmutableattributedstring

我在NSString中存储了cell.lblTitle.text。我正在使用以下代码将此NSString转换为NSMutableAttributedString

text = [[NSMutableAttributedString alloc] initWithData:[cell.lblTitle.text dataUsingEncoding:NSUTF8StringEncoding]
                                               options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
                                    documentAttributes:nil error:nil];

[text setAttributes:@{NSFontAttributeName:labelFont} range:NSMakeRange(0, [text length])];
[text addAttribute:NSForegroundColorAttributeName
             value:[UIColor darkGrayColor]
             range:NSMakeRange(0, [text length])];

当我在控制台中打印cell.lblTitle.text及其长度时,以下是我的输出:

po cell.lblTitle.text

Address: HM<MM-
UU@FF-
Mobile,
Alabama,
123456-
United States

po [cell.lblTitle.text length]
61

当我打印文字时,我是NSMutableAttributedString。控制台中的输出是:

po text
Address: HM{
    NSColor = "UIDeviceWhiteColorSpace 0.333333 1";
    NSFont = "<UICTFont: 0x7aebc0f0> font-family: \"Futura-Medium\"; font-weight: normal; font-style: normal; font-size: 15.00pt";
}

po [text length]
11

以下是我的崩溃日志:

  

***由于未捕获的异常终止应用程序&#39; NSRangeException&#39;,原因:&#39; NSMutableRLEArray objectAtIndex:effectiveRange :: Out of   界限&#39;

所以,特殊字符后的字符串&#34;&lt;&#34;未识别,我的应用程序崩溃。我该如何管理这个特殊角色&#34;&lt;&#34;所以我得到了输出[text length] = 61

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的文字不是HTML,所以不要试图创建它。只需使用initWithString:直接从文本创建属性字符串。