CodableExtensions 0.3.0

CodableExtensions 0.3.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2019年6月
SPM支持 SPM

James Ruston 维护。



CodableExtensions

Version License Platform Carthage compatible

安装

CodableExtensions 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile

pod 'CodableExtensions'

并运行

pod install

用法

解码

要创建一个自定义解码转换器,您只需实现 DecodingContainerTransformer。项目中提供了一个示例,用于将正则表达式转换为其他形式。

import CodableExtensions

public class RegexCodableTransformer: DecodingContainerTransformer {
    
    public typealias Input = String
    public typealias Output = NSRegularExpression
    
    public init() {}
    
    public func transform(_ decoded: Input) throws -> Output {
        return try NSRegularExpression(pattern: decoded, options: [])
    }
}

需要定义 InputOutput 类型,以匹配预期的转换类型。在这种情况下,输入是 String 类型,输出是 NSRegularExpression 类型。

transform 函数中执行转换逻辑。如果任何地方发生错误,则必须抛出错误。

自定义转换器可用于Decodable初始化器

init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        regex = try container.decode(.regex, transformer: RegexCodableTransformer())
}

编码

要创建自定义编码转换器,请创建一个实现EncodingContainerTransformer的类

例如,编码NSRegularExpression

class RegexCodableTransformer: EncodingContainerTransformer {

    typealias Input = String
    typealias Output = NSRegularExpression
    
    public func transform(_ encoded: Output) throws -> Input {
        return encoded.pattern
    }
}

要使用此转换器,实现Encodable函数encode(to encoder: Encoder)

func encode(to encoder: Encoder) throws {
        var container =  encoder.container(keyedBy: CodingKeys.self)
        try container.encode(regex, forKey: .regex, transformer: RegexCodableTransformer())
}

如果您的转换器同时符合EncodingContainerTransformerDecodingContainerTransformer,则可以使用CodingContainerTransformer别名

完整示例请查看测试https://github.com/jamesruston/CodableExtensions/blob/master/Example/Tests/Tests.swift

关于此库背后的动机,请阅读我的Medium文章https://medium.com/@James_Ruston/codable-vs-objectmapper-af5fe8e8efd5

安装

CocoaPods

CodableExtensions通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中

pod 'CodableExtensions'

运行pod install以将CodableExtensions集成到您的工作空间。

Carthage

CodableExtensions通过Carthage提供。要安装它,只需将以下行添加到您的Carthage文件中

github "jamesruston/CodableExtensions"  

运行carthage update以构建框架,然后将构建的CodableExtensions.framework拖到您的Xcode项目中。

作者

https://medium.com/@James_Ruston/

许可证

CodableExtensions 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。