Слишком долгое время для преобразования html-данных в NSAttributedString.Есть идеи? - PullRequest
0 голосов
/ 21 декабря 2018

Я занимаюсь разработкой приложения Objective-C для macOS.В некоторых случаях мне нужно преобразовать 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 голосов
/ 21 декабря 2018

У меня не было возможности попробовать это, но если вы используете initWithHTML:options:documentAttributes: версию инициализатора, вы можете использовать опцию Timeout.

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

Значение должно быть тайм-аутомв секундах.

...