Skip to content

Instantly share code, notes, and snippets.

@Dev1an
Created April 12, 2018 13:50
Show Gist options
  • Select an option

  • Save Dev1an/47691ccacc3335fe4762eaf3e1363dc4 to your computer and use it in GitHub Desktop.

Select an option

Save Dev1an/47691ccacc3335fe4762eaf3e1363dc4 to your computer and use it in GitHub Desktop.
//
// SmartValueTransformer.swift
// Panasonic IP setup
//
// Created by Damiaan on 12/04/18.
// Copyright © 2018 Devian. All rights reserved.
//
import Foundation
class SmartValueTransformer<Input, Output: AnyObject>: ValueTransformer {
let forwardTransform: (Input) -> Output
init(name: String, transformer: @escaping (Input) -> Output) {
forwardTransform = transformer
super.init()
ValueTransformer.setValueTransformer(self, forName: NSValueTransformerName(rawValue: name))
}
override class func transformedValueClass() -> AnyClass {
return Output.self
}
override func transformedValue(_ value: Any?) -> Any? {
if let input = value as? Input {
return forwardTransform(input)
} else {
return nil
}
}
}
class StringTransformer<Input>: SmartValueTransformer<Input, NSString> {
init(name: String, transformer: @escaping (Input) -> String) {
super.init(name: name) { transformer($0) as NSString }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment