最好的方法来保存和检索到核心数据的UIColors

我可以想到几个方法,例如将每个颜色组件保存为一个float,将一个数组保存为可变形。 从图案图像保存颜色可能会稍微复杂一点,但我想你可以将图像的名称保存为一个string,并将其插入创build代码。

我在正确的轨道上,否则一般来说做这个任务的最好和最有效率的是什么?

你可以将你的UIColor转换为NSData然后存储它:

 NSData *theData = [NSKeyedArchiver archivedDataWithRootObject:[UIColor blackColor]]; 

那么你可以把它转换回你的UIColor对象:

 UIColor *theColor = (UIColor *)[NSKeyedUnarchiver unarchiveObjectWithData:theData]; 

UPD:

在关于存储数据的注释中回答你的问题,最简单的方法是将其存储在NSUserDefaults

 NSData *theData = [NSKeyedArchiver archivedDataWithRootObject:[UIColor blackColor]]; [[NSUserDefaults standardUserDefaults] setObject:theData forKey:@"myColor"]; 

然后再回顾一下:

 NSData *theData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"]; UIColor *theColor = (UIColor *)[NSKeyedUnarchiver unarchiveObjectWithData:theData]; 

我已经做了一些Oleg的答案Swift 3版本的代码进行了一些修改。

 extension UIColor { class func color(withData data:Data) -> UIColor { return NSKeyedUnarchiver.unarchiveObject(with: data) as! UIColor } func encode() -> Data { return NSKeyedArchiver.archivedData(withRootObject: self) } } 

用法

 var myColor = UIColor.green // Encoding the color to data let myColorData = myColor.encode() // This can be saved into coredata/UserDefaulrs let newColor = UIColor.color(withData: myColorData) // Converting back to UIColor from Data