面临崩溃以检查 NSMutableAttributedString 中的特殊字符
Facing crash to check special character in 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
当我打印 text 时,这是我的 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
以下是我的崩溃日志:
*** Terminating app due to uncaught exception 'NSRangeException', reason: 'NSMutableRLEArray objectAtIndex:effectiveRange:: Out of
bounds'
因此,无法识别特殊字符“<”后的字符串,我的应用程序崩溃了。我怎样才能管理这个特殊字符“<”所以我得到输出 [text length] = 61
.
如有任何帮助,我们将不胜感激。
您的文本不是 html 所以不要尝试这样创建它。只需使用 initWithString:
直接从文本创建属性字符串。
我有一个 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
当我打印 text 时,这是我的 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
以下是我的崩溃日志:
*** Terminating app due to uncaught exception 'NSRangeException', reason: 'NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds'
因此,无法识别特殊字符“<”后的字符串,我的应用程序崩溃了。我怎样才能管理这个特殊字符“<”所以我得到输出 [text length] = 61
.
如有任何帮助,我们将不胜感激。
您的文本不是 html 所以不要尝试这样创建它。只需使用 initWithString:
直接从文本创建属性字符串。