解包 1.0.0

Unpack 1.0.0

Oren Farhan 维护。



Unpack 1.0.0

Unpack

Version License Platform

关于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文件。