Unpack
关于Unpack
Unpack是一个简单的库,它包装了Codable
协议,使您的对象简单编码和解码,利用协议和协议扩展的强大功能。
它去掉了常见的模板化需求,把干净的、易读的代码留给你。
对象打包/解包有许多不同的方法。
您只需参照Packable
(编码)、Unpackable
(解码)或UnPacked
(两者都支持)进行协议遵守即可。
在其最简单形式中,它使用默认的JSONEncoder
/ JSONDecoder
进行转换。如果您想提供自己的配置,可以在您的类中实现该获取器或使用其中一个接收配置参数的函数。
一些示例
例如在每次转换时编写这个
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
decoder.keyDecodingStrategy = .convertFromSnakeCase
let myObject: MyObject? = try? decoder.decode(MyObject.self, from: data)
这样不是更简单吗?
let myObject = try? MyObject.unpack(data: data)
或者这样?
let myObject: MyObject? = try? data.unpack()
对我来说就是这样。
反过来呢?转换这个
let encoder = JSONEncoder()
encoder.dateEncodingStrategy = .secondsSince1970
encoder.keyEncodingStrategy = .convertToSnakeCase
let data: Data? = try? encoder.encode(myObject)
为这个
let data: Data? = try? myObject.pack()
很简单,对吧?对于数组也适用。
还有许多其他方法可以实现。这里有一些示例
let user: User? = try? unpack(data: data)
let data: Data? = try? pack(user)
let userDictionary = ["name" : "Walter White", "job" : "Chemistry teacher", "hidden_identity" : "Heisenberg"]
var unpacker = Unpacker<Person>(decoder: customDecoder)
let character = try? unpacker.unpack(json: userDictionary)
// The unpacker will get hold of your possible error (if you don't want to do-try-catch)
if let error = unpacker.error {
print(error)
}
简单到无需解释。
继续探索吧!
安装
可以通过CocoaPods进行解压。要安装它,只需将以下行添加到您的Podfile中
pod 'Unpack'
作者
奥伦·法汉恩
许可
Unpack遵循MIT许可证。有关更多信息,请参阅LICENSE文件。