Как загрузить локальный HTML-файл в WKWebView при разработке платформы iOS - PullRequest
1 голос
/ 04 апреля 2019

Я разработал каркас iOS, который пользователи могут использовать с CocoaPod.Но при использовании его в проекте возникает ошибка в этой строке:

let url = Bundle(for: type(of: self)).url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!

Эта строка находится в рамках, и ошибка:

Unexpectedly found nil while unwrapping an Optional value

В рамках Iиметь папку с именем «assets» и файл с именем «file_name.html».Ошибка происходит только тогда, когда она используется в рамках.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Похоже, что file_name.html отсутствует в вашей среде Cocoapod. Пожалуйста, добавьте это как показано ниже в вашем psspec.

   s.resource_bundles = {
    'ResourceBundleName' => ['path/to/resources/Assets/*']
   }
   s.resources = "ResourceBundleName/**/*.{html,icon}"

Ваш код выглядит совершенно нормально, когда я добавил его в одну из функций моего примера проекта Framework. Нет ошибки компиляции.

Вы также можете использовать следующий код внутри вашего модуля для доступа к ресурсу.

  let frameworkBundle = Bundle(for: self.classForCoder)
  let bundleURL = frameworkBundle.resourceURL?.appendingPathComponent("FrameworkName.bundle")
  let resourceBundle = Bundle(url: bundleURL!)
  let url = resourceBundle?.url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!

Пожалуйста, перейдите по этой ссылке для получения дополнительной информации о том, как получить доступ к ресурсу из Framework: "https://useyourloaf.com/blog/loading-resources-from-a-framework/". Думаю, это будет полезно для вас.

0 голосов
/ 04 апреля 2019
let url = Bundle(for: type(of: self)).url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!
-------------------------------^

Убедитесь, что self указывает на класс фреймворка, чтобы найти правильный пакет. И вам не нужно использовать type(of:_):

let bundle = Bundle(for: FrameworkClass.self)
let url = bundle.url(forResource: "file_name", withExtension: "html", subdirectory: "assets")!
...