加载文件目录中下载的图像 (xcode 8.1,IOS 10 Swift 3.0)

标签: Xcode ios Swift
发布时间: 2017/1/22 21:30:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这是我如何加载我的 wkwebview:

    let url = URL(fileURLWithPath: Bundle.main.path(forResource: "webviews/helloworld", ofType: "html")!)
    self.webview!.loadFileURL(url, allowingReadAccessTo: url)

一切都好,在模拟器上,但当试着上我所下载的图像保存在文件目录中而不会加载的 iPhone 应用程序。

这是图像的我如何得到文件的 url。

    let fileManager = FileManager.default
    let directoryURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
    let pathComponent = filename

    return directoryURL.appendingPathComponent(pathComponent).absoluteString

这会返回这样的事情︰file:///Users/Joshua/Library/Developer/CoreSimulator/Devices/9FE87399-6EBD-4DF3-BC6A-FD844DF62833/data/Containers/Data/Application/C1E250A4-823E-4590-8BDE-3891666CA728/Documents/57a8dd7255723c964658262d43c169c1

我有同样的问题,作为这个家伙︰ WKwebview︰ 不能查看应用程序文档图像应用程序 web 视图 iOS 中的 swift

解决方法 1:

所以做要解决的问题是将 webviews 目录传输到 /Libraries 目录并存储的照片我下载到 /Libraries/Caches

    let functionName:String = "moveFileToLibrary"
    let library = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)[0]
    let bundle = Bundle.main.path(forResource: "webviews", ofType: "")!

    let fileManager = FileManager.default

    if fileManager.isWritableFile(atPath: library.path)
    {
        if self.debug {print("\(functionName) @ \(self.className) => \(library.path) : File is writable")}
    }
    else
    {
        if self.debug {print("\(functionName) @ \(self.className) => \(library.path) : File is read-only")}
    }

    if fileManager.isWritableFile(atPath: bundle)
    {
        if self.debug {print("\(functionName) @ \(self.className) => \(bundle) : File is writable")}
    }
    else
    {
        if self.debug {print("\(functionName) @ \(self.className) => \(bundle) : File is read-only")}
    }

    if !fileManager.fileExists(atPath: library.appendingPathComponent("webviews").path)
    {
        do
        {
            try fileManager.copyItem(atPath: bundle, toPath: library.appendingPathComponent("webviews").path)
            if self.debug {print("\(functionName) @ \(self.className) => Webviews folder copied!")}
        }
        catch let error
        {
            if self.debug {print("\(functionName) @ \(self.className) => Error Writing Webviews folder: \(error.localizedDescription)")}
        }
    }
    else
    {
        if self.debug {print("\(functionName) @ \(self.className) => Webviews folder exists. Continue woth life.")}
    }
官方微信
官方QQ群
31647020