开发iOS框架时如何在WKWebView中加载本地HTML文件

时间:2019-04-04 13:44:57

标签: ios swift cocoapods wkwebview

我开发了一个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

在框架中,我有一个名为“ assets”的文件夹和一个名为“ file_name.html”的文件。该错误仅在框架中使用时发生。

2 个答案:

答案 0 :(得分:0)

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")!

答案 1 :(得分:0)

您的Cocoapod框架中似乎缺少“ file_name.html”。请在您的podspec中添加以下内容。

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

当我将其添加到示例Framework项目的功能之一中时,您的代码似乎绝对正确。没有编译错误。

您还可以在pod中使用以下代码来访问资源。

  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")!

请参阅此链接,以获取有关如何从框架“ https://useyourloaf.com/blog/loading-resources-from-a-framework/”访问资源的更多信息。以为会对您有所帮助。