我正在尝试将 UIColor 存储在 Core Data 中(我不想将其存储为字符串),我想使用 NSValueTransformer。我已经编写了下一个 ValueTransformerclass(toHex(),它是我将颜色转换为十六进制字符串的扩展),但是每次当我尝试保存数据时(例如object.color = UIColor.blackColor()
),我都会收到崩溃并显示无法读取的错误消息 «Unrecognized selector sent to 0xf93»。
class ColorTransformer: NSValueTransformer {
override class func transformedValueClass() -> AnyClass {
return NSData.self
}
override class func allowsReverseTransformation() -> Bool {
return true
}
override func transformedValue(value: AnyObject?) -> AnyObject? {
let color = value as? UIColor
guard let hex = color?.toHexString() else { return nil }
let hexString = NSString(string: hex)
return hexString.dataUsingEncoding(NSUTF8StringEncoding)
}
override func reverseTransformedValue(value: AnyObject?) -> AnyObject? {
guard let hexData = value as? NSData,
let hexString = NSString(data: hexData, encoding: NSUTF8StringEncoding) else { return nil }
return UIColor(hexString: String(hexString))
}
}