'NSRangeException',原因:'*** - [NSBigMutableString characterAtIndex:]:索引1258超出范围;弦长1176'

问题描述 投票:0回答:2
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;
ios objective-c nsattributedstring
2个回答
1
投票

你可以试试下面的,试一试,让我知道它是否正常工作。

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

如果您不确定正确的编码,您应该使用NSUTF8StringEncoding

UPDATE

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完美配合。


0
投票

即使在最基本的例子中,我也看到了崩溃。我能够跟踪它在为UICollectionView创建UICollectionViewCells时这样做。当我把它拉出来并且在更新列表之前运行时,它工作得很好......完全相同的代码。

iOS内部似乎有一个与此相关的错误,至少是在UICollectionViewDataSource:collectionView:cellForItemAtIndexPath:内部调用的情况

© www.soinside.com 2019 - 2024. All rights reserved.