«NSRangeException», причина: «*** - [NSBigMutableString characterAtIndex:]: индекс 1258 выходит за границы; длина строки 1176 ' - PullRequest
0 голосов
/ 16 мая 2018
NSString *htmlString = [NSString stringWithFormat:@"<html> <head><style type=\"text/css\">body {         font-family: Mehr Nastaliq Web; font-size: 22pt; white-space: pre-wrap;  text-align: right;  lang: ar; direction: RTL; -webkit-user-select: none; }</style>     </head><body leftmargin=\"20\" topmargin=\"0\" rightmargin=\"20\" > %@  </body></html>",str];
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData: [htmlString dataUsingEncoding:NSUnicodeStringEncoding]  options: @{ NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType }  documentAttributes: nil error: nil];
self.txtView.attributedText=attributedString;

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Я также вижу сбой, даже в самых простых примерах. Я был в состоянии отследить это, делая это при создании UICollectionViewCells для UICollectionView. Когда я вытащил его и запустил до обновления списка, он работал нормально ... точно такой же код.

Кажется, в iOS есть ошибка, связанная с этим, по крайней мере, в тех случаях, когда она вызывается внутри UICollectionViewDataSource:collectionView:cellForItemAtIndexPath:

0 голосов
/ 16 мая 2018

Можете ли вы попробовать ниже, просто попробуйте и дайте мне знать, работает или нет.

NSAttributedString * attributedString = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding]
                                                                       options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType}
                                                            documentAttributes:nil
                                                                         error:nil];

Если вы не уверены в правильной кодировке, вы должны использовать NSUTF8StringEncoding

ОБНОВЛЕНИЕ

NSString *htmlString = @"<html><head><style type=\"text/css\">body { font-family: Mehr Nastaliq Web; font-size: 22pt; white-space: pre-wrap; text-align: right; lang: en; direction: RTL; -webkit-user-select: none; meta charset=\"UTF-8\" }</style> </head><body leftmargin=\"20\" topmargin=\"0\" rightmargin=\"20\"> مُدّعا عَنقا ہے اپنے عالَمِ تقریر کا میری تقریر کا مفہوم چونکہ عنقا یعنی معدوم ہے اور معدوم </body></html>";
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData: [htmlString dataUsingEncoding:NSUnicodeStringEncoding]  options: @{ NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType }  documentAttributes: nil error: nil];
_txtView.attributedText = attributedString;

Отлично работает с NSUnicodeStringEncoding .

...