【问题标题】:Swift4 app crashes when loading local HTML [duplicate]加载本地 HTML 时 Swift4 应用程序崩溃 [重复]
【发布时间】:2017-12-04 12:31:22
【问题描述】:

在开发网络应用程序数周后,我在 (WKWebView) 网络视图中使用了外部 URL。现在我正在转向生产,我想嵌入 web 应用并加载本地网页。

我只是搬来了

let url = URL(string: "http://hidden-url.com/")
self.webView!.load(URLRequest(url: url!))

let url = URL(string: Bundle.main.path(forResource: "index_prod", ofType: "html")!)
self.webView!.load(URLRequest(url: url!))

但这会导致我的应用崩溃。我确定文件已正确加载,并且print 之前、中间和之后的行将出现在控制台中。

错误:Thread 1: EXC_BAD_ACCESS (code=1, address=0x10)

【问题讨论】:

  • 检查是否将 index_prod 文件添加到目标中
  • 我仔细检查了它,它列在我的项目层次结构和构建阶段的“复制捆绑资源”中
  • 用try catch包围以获得异常
  • 加载文件不会捕获任何异常,加载到web视图中会。
  • stackoverflow.com/questions/24882834/… stackoverflow.com/questions/39336235/… 您必须使用loadHTMLString()loadFileURL(url:allowingReadAccessTo:)

标签: ios swift webview wkwebview


【解决方案1】:

您需要从文件中加载字符串内容,使用 contentsOfFile 方法获取字符串并使用 webview 的 loadHTMLString 方法,打印错误或创建一些显示错误的枚举

enum WebError: Swift.Error {
    case fileNotFound(name: String)
    case parsing(contentsOfFile: String)
}

guard let url = Bundle.main.path(forResource: "index_prod", ofType: "html") else {
   throw WebError.fileNotFound(name: file) // throw file not found error 
}

do {
      let html = try String(contentsOfFile: url)
      self.webView.loadHTMLString(html, baseURL: Bundle.main.bundleURL)
} catch {
      throw WebError.parsingError(contentsOfFile: file) 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2018-08-26
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多