Created
July 10, 2018 16:28
-
-
Save raphaeltraviss/fa620780eacc8d57f2d75424b1b796b8 to your computer and use it in GitHub Desktop.
UIImageColors extension to make them cacheable with Haneke
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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