Skip to content

Instantly share code, notes, and snippets.

@raphaeltraviss
Created July 10, 2018 16:28
Show Gist options
  • Save raphaeltraviss/fa620780eacc8d57f2d75424b1b796b8 to your computer and use it in GitHub Desktop.
Save raphaeltraviss/fa620780eacc8d57f2d75424b1b796b8 to your computer and use it in GitHub Desktop.
UIImageColors extension to make them cacheable with Haneke
import Foundation
import UIImageColors
import Haneke
extension UIImageColors : DataConvertible, DataRepresentable {
public typealias Result = UIImageColors
public static func convertFromData(_ data: Data) -> Result? {
let representation = NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: Data]
guard let colorData = representation else { return nil }
guard let backgroundColorData = colorData["backgroundColor"] else { return nil }
guard let backgroundColor = NSKeyedUnarchiver.unarchiveObject(with: backgroundColorData) as? UIColor else { return nil }
guard let primaryColorData = colorData["primaryColor"] else { return nil }
guard let primaryColor = NSKeyedUnarchiver.unarchiveObject(with: primaryColorData) as? UIColor else { return nil }
guard let secondaryColorData = colorData["secondaryColor"] else { return nil }
guard let secondaryColor = NSKeyedUnarchiver.unarchiveObject(with: secondaryColorData) as? UIColor else { return nil }
guard let detailColorData = colorData["detailColor"] else { return nil }
guard let detailColor = NSKeyedUnarchiver.unarchiveObject(with: detailColorData) as? UIColor else { return nil }
return UIImageColors(background: backgroundColor, primary: primaryColor, secondary: secondaryColor, detail: detailColor)
}
public func asData() -> Data! {
let representation:[String:Data] = [
"backgroundColor": NSKeyedArchiver.archivedData(withRootObject: self.background),
"primaryColor": NSKeyedArchiver.archivedData(withRootObject: self.primary),
"secondaryColor": NSKeyedArchiver.archivedData(withRootObject: self.secondary),
"detailColor": NSKeyedArchiver.archivedData(withRootObject: self.detail),
]
return NSKeyedArchiver.archivedData(withRootObject: representation)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment