我正在为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不解析链接。当然,我可能完全错了。任何帮助是极大的赞赏。谢谢
答案 0 :(得分:1)
我没有机会尝试此操作,但是如果您使用initWithHTML:options:documentAttributes:
版本的初始化程序,则可以使用Timeout
选项。
NSDictionary *htmlAttrs = nil;
NSDictionary *options = @{ NSTimeoutDocumentOption: @(0.5) };
NSMutableAttributedString *rtfAttributedString = [[NSMutableAttributedString alloc] initWithHTML:htmlData options:options documentAttributes:&htmlAttrs];
该值应该是以秒为单位的超时。