后台线程中来自HTML的NSAttributedString

后台线程中来自HTML的NSAttributedString,第1张

概述我需要的是从相对较大的HTML字符串创建NSAttributedString对象并将它们(NSAttributedString-s)存储在数据库中.当然我想在后台线程中这样做. 这是一个简单的代码(失败)来演示我正在尝试做的事情: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 我需要的是从相对较大的HTML字符串创建NSAttributedString对象并将它们(NSAttributedString-s)存储在数据库中.当然我想在后台线程中这样做.

这是一个简单的代码(失败)来演示我正在尝试做的事情:

dispatch_async(dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAulT,0),^{    Nsstring *HTMLString = @"<p>HTML string</p>";    NSDictionary *options = @{NSdocumentTypedocumentAttribute : NSHTMLTextdocumentType,NSCharacterEnCodingdocumentAttribute : @(NSUTF8StringEnCoding)};    NSError *error = nil;    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithData:[HTMLString dataUsingEnCoding:NSUTF8StringEnCoding] options:options documentAttributes:nil error:&error];});

根据this discussion,可能根本无法在后台线程中执行此 *** 作,因为使用NSHTMLTextdocumentType选项创建NSAttributedString使用WebKit,这需要在执行任何异步工作时旋转runloop.

但也许有人想通了这条路?我有非常简单的HTML,只有文本和链接,可能有一种方法来指定从HTML创建NSAttributedString不需要任何“WebKit渲染”?

或者可能有人可以推荐第三方库从不使用WebKit的简单HTML创建NSAttributedStrings?

解决方法 是的,你不能只在主线程的后台线程中.
使用Oliver Drobnik的NSAttributedString HTML类.

代码将是这样的 –

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithHTML:<HTML> dataUsingEnCoding:NSUTF8StringEnCoding] documentAttributes:nil];

链接 – https://github.com/InfiniteLoopDK/NSAttributedString-Additions-for-HTML/blob/master/Classes/NSAttributedString%2BHTML.m

总结

以上是内存溢出为你收集整理的后台线程中来自HTML的NSAttributedString全部内容,希望文章能够帮你解决后台线程中来自HTML的NSAttributedString所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存