これは私の問題を解決しました:
CoreData 属性名をカスタム NSValueTransformer サブクラスに設定します: MQColorTransformer
次の NSValueTransformer サブクラスを実装しました (これは、Schemetrical が提案したように UIColor を NSData に変換していますが、UIColor を自分の色プロパティに割り当てることができ、NSValueTransformer がシーンの背後で変換を処理するという利点があります):
NSValueTransformer サブクラス
import Foundation
import UIKit
@objc(MQColorTransformer) class MQColorTransformer: NSValueTransformer {
override class func transformedValueClass() -> AnyClass{
return NSData.classForCoder()
}
override func transformedValue(value: AnyObject!) -> AnyObject {
// Transform UIColor to NSData
let color = value as! UIColor
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
var components:[CGFloat] = [red, green, blue, alpha]
let dataFromColors = NSData(bytes: components,
length: sizeofValue(components)*components.count)
return dataFromColors
}
override func reverseTransformedValue(value: AnyObject!) -> AnyObject {
// Transform NSData to UIColor
let data = value as! NSData
var components = [CGFloat](count: 4, repeatedValue:0)
var length=sizeofValue(components)
data.getBytes(&components, length: length * components.count)
let color = UIColor(red: components[0],
green: components[1],
blue: components[2],
alpha: components[3])
return color
}
}