在NSAttributedString中转换html数据的时间太长。有什么想法吗?

时间:2018-12-21 00:29:20

标签: html objective-c macos cocoa nsattributedstring

我正在为macOS开发一个Objective-C应用程序。在某些情况下,我需要使用以下代码将html数据转换为富文本:

NSDictionary *htmlAttrs = nil;
NSMutableAttributedString *rtfAttributedString = [[NSMutableAttributedString alloc] initWithHTML:data documentAttributes:&htmlAttrs];

问题是,有时,转换简单电子邮件的html正文可能需要40秒钟的时间,因此对于我来说此解决方案是不可接受的。我知道在堆栈溢出时还有其他与此类似的问题,但我想让您注意到一个奇怪的事情:在转换过程结束时,在日志中显示如下一行:

Task <A8B047AC-DABA-4259-AAF7-E2C23C84A2F1>.<0> HTTP load failed (error code: -999 [1:89])

这使我认为NSAttributedString可能正在尝试解析一些可能不存在的http链接,因此它会等待超时(超出正常转换时间40秒,因此很可能是正确的)。如果这是真的,那么可以通过其他采用更多选项的类似方法,告诉NSAttributedString不解析链接。当然,我可能完全错了。任何帮助是极大的赞赏。谢谢

1 个答案:

答案 0 :(得分:1)

我没有机会尝试此操作,但是如果您使用initWithHTML:options:documentAttributes:版本的初始化程序,则可以使用Timeout选项。

NSDictionary *htmlAttrs = nil;          
NSDictionary *options = @{ NSTimeoutDocumentOption: @(0.5) };
NSMutableAttributedString *rtfAttributedString = [[NSMutableAttributedString alloc] initWithHTML:htmlData options:options documentAttributes:&htmlAttrs];

该值应该是以秒为单位的超时。