日常开发,都会有一些简单的归档需求。在 iOS 上,常用的归档主要是userdefault
和write to file
两种。至于数据库,对于一些轻量级的需求来说未免牛刀杀鸡。在 swift 上,有一个开源库Disk
用最少的代码对归档需求进行了封装整理。
支持类型
data
disk 支持data
,image
,codable-data
类星体。
data是常用的二进制类型。通常可以为 Image,class object, text 等等
1 | /// Save Data to disk |
image
image 存储是最常见的需求之一。disk 对 image 的存储实现也很简单
1 | static func save(_ value: UIImage, to directory: Directory, as path: String) throws { |
可以看到, 对 Image 支持是有限制的,只支持 jpg/png 类型的图片,只是简单的转换为 imagedata 进行存储。
encodable-data
encodable-data 是 swift4新加入的特性。使 class/struct 支持Codable
协议,实现的对应的方法可以将其转换成其他数据格式,如 JSON。
在这里,disk 支持的是将遵循Codable
实例存储为json object
1 | static func save<T: Encodable>(_ value: T, to directory: Directory, as path: String) throws { |
对于需要追加文件,先将原有数据读出,在内存中追加数据在后面,再将整个写入。
空间大小
URLResourceValues
通过 URL 得到,可以对标准资源文件的空间大小进行判断
1 |
|
注意以上特性都是在 iOS11之后特定的,需要加上@available(iOS 11.0, *)