Удалить файл HTML после загрузки в веб-представление - PullRequest
0 голосов
/ 10 марта 2020

У меня есть строка, которая будет отображаться как HTML в WKWebView, и мне нужно, чтобы она имела доступ к локальному CSS файлу. Поскольку WKWebView не разрешает доступ к локальным файлам, если вы используете метод loadHTMLString, я работаю над этим, записывая строку во временный файл, а затем загружая ее вместо:

extension WKWebView {
    @discardableResult func loadHTMLStringWithLocalFiles (_ html: String, baseURL: URL) throws -> WKNavigation? {
        let tempFileURL = baseURL.appendingPathComponent("/temp.html")
        let nav: WKNavigation?

        do {
            try html.write(to: tempFileURL, atomically: false, encoding: .utf8)
            nav = self.loadFileURL(tempFileURL, allowingReadAccessTo: baseURL)
            // try FileManager.default.removeItem(at: tempFileURL)
        } catch {
            throw error
        }

        return nav
    }
}

Это работает что касается пользовательского интерфейса - он успешно загружает строку HTML вместе с локальным CSS. Но мне не нравится оставлять этот temp.html файл лежащим без дела, и если я пытаюсь удалить его, как я это делал в закомментированной строке, представление просто отображает пустой экран, поэтому я предполагаю, что в некоторой степени это зависит от файла. Даже оборачивание в асинхронную функцию c не работает.

Я могу попытаться удалить его, когда они оставляют представление в качестве обходного пути, я полагаю, но даже это не будет работать, если приложение неожиданно закрывается (тогда как если он удаляется сразу после загрузки, вероятность того, что это произойдет между ними, должна быть незначительной). Есть ли способ сделать это, не оставляя временный файл без дела?

...