栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以缓存视频?iOS-迅捷

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以缓存视频?iOS-迅捷

使用Haneke,我无法检索缓存视频的文件路径。我通过将视频保存在缓存的目录中来处理它。

public enum Result<T> {    case success(T)    case failure(NSError)}class CacheManager {    static let shared = CacheManager()    private let fileManager = FileManager.default    private lazy var mainDirectoryUrl: URL = {        let documentsUrl = self.fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first!        return documentsUrl    }()    func getFileWith(stringUrl: String, completionHandler: @escaping (Result<URL>) -> Void ) {        let file = directoryFor(stringUrl: stringUrl)        //return file path if already exists in cache directory        guard !fileManager.fileExists(atPath: file.path)  else { completionHandler(Result.success(file)) return        }        DispatchQueue.global().async { if let videoData = NSData(contentsOf: URL(string: stringUrl)!) {   videoData.write(to: file, atomically: true)     DispatchQueue.main.async {         completionHandler(Result.success(file))     } } else {     DispatchQueue.main.async {         completionHandler(Result.failure(NSError.errorWith(text: "Can't download video")))     } }        }    }    private func directoryFor(stringUrl: String) -> URL {        let fileURL = URL(string: stringUrl)!.lastPathComponent        let file = self.mainDirectoryUrl.appendingPathComponent(fileURL)        return file    }}

该类的示例用法如下所示:

CacheManager.shared.getFileWith(stringUrl: "http://techslides.com/demos/sample-videos/small.mp4") { result in        switch result {        case .success(let url):  // do some magic with path to saved video  case .failure(let error): // handle errror        }    }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号