Как просмотреть HTML за пределами проекта xcode

Я хочу иметь возможность загружать HTML-файл, расположенный за пределами моего пакета приложений, на данный момент я могу загрузить файл, выполнив следующие действия: Это приложение для MacOS

    let htmlPath = Bundle.main.path(forResource: "/html/index", ofType:"html")

    let url = URL(fileURLWithPath: htmlPath!)

    let request = URLRequest(url: url)
    webView.load(request)

Это загрузка HTML-файла с именем index из ресурсов моего проекта. Я хочу, чтобы он прочитал файл из определенного пользователем местоположения. чтобы пользователь мог сообщить приложению, что HTML-файл находится на его рабочем столе.

я предполагаю, что код будет примерно таким:

  @IBOutlet var fileLocation: NSTextField
  @IBOutlet var webView: WKWebView!

  var file = fileLocation.StringValue

  let htmlPath = Bundle.main.path(forResource: "\(file)", ofType:"html")

  let url = URL(fileURLWithPath: htmlPath!)

  let request = URLRequest(url: url)
  webView.load(request)

Однако этот код выше приводит к сбою с ошибкой

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

Связана ли ошибка с указанием пути в Bundle.main.path?
Если да, то что бы я тоже это изменил?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема в следующей строке кода:

let htmlPath = Bundle.main.path(forResource: "\(file)", ofType:"html")

Вы ищете файл в пакете приложений вашего приложения, когда файл находится в определенном пользователем месте. Приложение не может найти файл в пакете приложений, поэтому значение htmlPath равно нулю. Когда вы устанавливаете URL-адрес, приложение вылетает, потому что вы неявно разворачиваете nil htmlPath.

Я не могу сказать вам конкретно, на что нужно изменить путь, потому что путь определяется пользователем. Чтобы решить вашу проблему, вам необходимо отслеживать определенное пользователем местоположение в вашем приложении, чтобы вы могли загрузить файл оттуда. User Defaults - хорошее место для сохранения определенного пользователем местоположения как части настроек приложения. Посмотрите на класс UserDefaults в документации Apple. Посмотрите на классы FileManager и URL, чтобы найти файл на рабочем столе пользователя и загрузить его.

Другие вопросы по теме