Swift给Data类扩展读写方法

Data类的一个简单的扩展,用来转换json和读写。

let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory,FileManager.SearchPathDomainMask.userDomainMask, true).first

let cachePathUrl = URL(fileURLWithPath: cachePath!)

extension Data {
    /// json->Data
    init?(json:Any) {
        if JSONSerialization.isValidJSONObject(json),let data = try? JSONSerialization.data(withJSONObject: json) {
            self.init(data)
        }else {
            return nil
        }
    }
    /// Data->json
    func json() -> Any? {
        return  try? JSONSerialization.jsonObject(with: self)
    }
    /// wirte data
    func write(toCachefilename:String) -> Bool {
        try? FileManager.default.createDirectory(at: cachePathUrl, withIntermediateDirectories: true, attributes: nil)
        
        let url = cachePathUrl.appendingPathComponent(toCachefilename)
        do {
            try self.write(to: url)
            return true
        }catch {
            return false
        }
    }
    /// read data
    init?(cachefileName:String) {
        let url = cachePathUrl.appendingPathComponent(cachefileName)
        do {
            try self.init(contentsOf: url, options: .alwaysMapped)
        }catch {
            return nil
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容