2015-06-05 3 views
0

У меня есть NSString, хранящийся в cell.lblTitle.text. Я конвертирую это NSString в NSMutableAttributedString со следующим кодом.Облицовка сбоя для проверки специального символа в 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- 
[email protected] 
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 

Ниже мой журнал аварии:

*** Нагрузочного приложение из-за неперехваченное исключением 'NSRangeException', причина: «NSMutableRLEArray objectAtIndex: effectiveRange :: Из bounds '

Итак, строка после специального символа «<» не идентифицирована, и мое приложение сработает. Как я могу управлять этим специальным символом «<», поэтому я получаю вывод [text length] = 61.

Любая помощь будет оценена по достоинству.

+0

это () ...? или нет – Spynet

+0

нет нет на самом деле бирка. в этом случае он рассматривается как особый символ. – iPhone

+0

добавить авария, пожалуйста? – Spynet

ответ

0

Ваш текст не является html, поэтому не пытайтесь создать его как таковой. Просто используйте initWithString: для создания атрибутной строки непосредственно из текста.