ValueTransformerKit 1.2.0

ValueTransformerKit 1.2.0

phimage 维护。



  • phimage

ValueTransformerKit

License Platform Language

一个基于闭包和协议的框架,用于 ValueTransformer,通过标识符注册 ValueTransformer 的辅助函数。

创建一个 ValueTransformer

使用闭包

let transformer = ValueTransformer.closure { object in
   return ...
}

使用此方法不再需要创建 ValueTransformer 子类。

使用协议实现

实现 ValueTransformerTypeResersableValueTransformerType,并有一个计算属性 transformer 可用。

使用枚举

定义您的 enum,在 transformers 中列出您的所有枚举情况,实现 ValueTransformerType 协议的 transformedValue 函数。

enum StringTransformers: String, ValueTransformers, ValueTransformerType {
    case capitalized, lowercased, uppercased

    public static let transformers: [StringTransformers] = [.capitalized, .lowercased, .uppercased]

    public func transformedValue(_ value: Any?) -> Any? { ../* string manipulation */ }
}

注册它

您可以使用 ValueTransformer 的可选初始化器获取值转换器: init?(forName: NSValueTransformerName)

ValueTransformerRegisterable 协议可以帮助您注册 ValueTransformer。通过提供一个值转换器和标识符 name,将提供一个新方法

myValueTransformer.register()

所以在您的 ValueTransformerType 中定义一个标识符 name

struct MyTransformer: ValueTransformerType, ValueTransformerRegisterable {
    var name = NSValueTransformerName(rawValue: "MyTransformation")

对于单例实例

您可以使用 ValueTransformerSingleton 定义单例实例

struct MyTransformer: ValueTransformerType, ValueTransformerRegisterable, ValueTransformerSingleton {
    var name = NSValueTransformerName(rawValue: "MyTransformation")
    public static let instance = MyTransformer()

或静态函数可以帮助您注册它

MyTransformer.register() // same as MyTransformer.instance.register()

对于之前的枚举示例

enum StringTransformers: String, ValueTransformers, ValueTransformerType {
  ...
  var name: NSValueTransformerName {
     return NSValueTransformerName("String" + self.rawValue.capitalized)
  }

然后您可以逐个注册

StringTransformers.capitalized.register()

或者所有情况

StringTransformers.register()

一些实现

字符串

  • 大写
  • 全部大写
  • 全部小写

图片

  • PNG 表示
  • JPEG 表示

日期和时间

  • RFC 2822 时间戳*
  • 使用 DateFormatter.Style

数字

  • 使用 NumberFormatter.Style

区域组件

  • 使用 NSLocale.Key

苹果文档

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ValueTransformers/ValueTransformers.html

许可

ValueTransformerKit 根据 MIT 许可证提供。请参阅 LICENSE 文件获取更多信息。