在进行解析时,我正在使用下面的代码行将HTML字符串数据转换为属性字符串文本,
obj.strPlainText=[[NSMutableAttributedString alloc] initWithData:[obj.strContent dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}
documentAttributes:nil
error:nil];
但我的应用提供了不良访问权限 我收到了一个错误,
[NSHTMLWebDelegate retain]:发送到解除分配的实例的消息 0x7fa9fe027130
答案 0 :(得分:2)
[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];
但如果你在ios 8.1,2或3上运行它,应用程序将崩溃。 为了避免崩溃,您可以做的是:在队列中运行它。所以它总是在主线上。
答案 1 :(得分:1)
如果您要在项目中发布strPlainText
并使用ARC,则无需为strPlainText
答案 2 :(得分:1)
使用此功能可以解决您的问题:(如果是7.0 +)
NSError* error;
NSMutableAttributedString* str = [[NSMutableAttributedString alloc] initWithData:[source dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]}
documentAttributes:nil error:&error];
您必须将 str 设置为 obj.strPlainText ,例如
obj.attributedString = str;