如何从 iOS Swift 中的本地目录加载 index.html 文件?

How to load index.html file from local directory in iOS Swift?

我一直在从服务器下载 zip 文件并将 zip 文件解压缩到本地目录。

即/var/mobile/Containers/Data/Application/8A7B8DF1-AAA4-442E-99C9-82616FC3E192/Documents/assets.zip

解压路径:/var/mobile/Containers/Data/Application/8A7B8DF1-AAA4-442E-99C9-82616FC3E192/Library/Caches/47B7913E-A0B2-429D-AD91-AA3367EFB2AE

从解压缩的文件夹中,我需要将 index.html 加载到 WkWebView。但是我可以找到文件夹,但无法加载到 webview 中。

这里是下载 zip 文件并在本地目录中解压 zip 文件的代码:

 let url = URL(string: v)
 FileDownloader.loadFileAsync(url: url!) { (path, error) in
    print("PDF File downloaded to : \(path!)")

    guard let unzipPath = self.tempUnzipPath() else {
       return
    }
    print("Unzip path:", unzipPath)

    let success: Bool = SSZipArchive.unzipFile(atPath: path!,
                                               toDestination: unzipPath,
                                               preserveAttributes: true,
                                               overwrite: true,
                                               nestedZipLevel: 1,
                                               password: nil,
                                               error: nil,
                                               delegate: nil,
                                               progressHandler: nil,
                                               completionHandler: nil)
    if success != false {
       print("Success unzip")
    } else {
       print("No success unzip")
       return
    }

    var items: [String]
    do {
       items = try FileManager.default.contentsOfDirectory(atPath: unzipPath)
       print("array item for unzip", items[0])               
    } catch {
       return
    }

    for v in items[0] {
       print("vv index.html", v)
       self.buildAry.append(v)
    }

    print("build ary", self.buildAry)
    let ss = self.buildAry[0]
    print("index html", ss)
 }                              

这是我的控制台输出:

 Success unzip
 array item for unzip build
vv index.html b
vv index.html u
vv index.html i
vv index.html l
vv index.html d
 build ary 2020-02-07 19:40:44.480754+0530[9847:2135988] [Process] kill() returned unexpected error 1
["b", "u", "i", "l", "d"]
 index html b

如何从解压缩的文件夹中将 index.html 加载到 WKWebView 中。非常感谢任何帮助..

通常要在 WKWebView 中打开本地文件,您可以在 WKWebView 实例上调用 loadFileURL(URL, allowReadAccessTo: URL)

评论后编辑:
如果您知道,您的 index.html 将始终位于“构建”文件夹中,您可以执行以下操作:

let url = URL(fileURLWithPath: unzipPath, isDirectory: false).appendingPathComponent("build").appendindPathComponent("Index.html", isDirectory: false)   
myWKWebView.loadFileURL(url, allowsReadAccessTo: url)

如果您需要更多帮助,请发表评论。