Mrw*_*lfy 14 core-data uicolor ios
我可以想到几种方法,例如将每个颜色组件保存为浮点数,将数组保存为可转换的.保存图案图像的颜色可能会稍微复杂一点,但我想你可以将图像的名称保存为字符串并将其插入到创建代码中.
我是在正确的轨道上,否则一般来说最好和最有效率的是什么?
Ole*_*leg 16
您可以转换UIColor
为NSData
然后存储它:
NSData *theData = [NSKeyedArchiver archivedDataWithRootObject:[UIColor blackColor]];
Run Code Online (Sandbox Code Playgroud)
然后你可以将它转换回你的UIColor
对象:
UIColor *theColor = (UIColor *)[NSKeyedUnarchiver unarchiveObjectWithData:theData];
Run Code Online (Sandbox Code Playgroud)
UPD:
在关于存储数据的评论中回答您的问题,最简单的方法是将其存储在NSUserDefaults
:
NSData *theData = [NSKeyedArchiver archivedDataWithRootObject:[UIColor blackColor]];
[[NSUserDefaults standardUserDefaults] setObject:theData forKey:@"myColor"];
Run Code Online (Sandbox Code Playgroud)
然后检索它:
NSData *theData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
UIColor *theColor = (UIColor *)[NSKeyedUnarchiver unarchiveObjectWithData:theData];
Run Code Online (Sandbox Code Playgroud)
我对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)
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 5版本的扩展
extension UIColor {
class func color(data:Data) -> UIColor? {
return try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? UIColor
}
func encode() -> Data? {
return try? NSKeyedArchiver.archivedData(withRootObject: self, requiringSecureCoding: false)
}
}
Run Code Online (Sandbox Code Playgroud)
用法
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5113 次 |
最近记录: |