【发布时间】:2014-12-15 08:35:52
【问题描述】:
我在 NSUserDefaults 中保存颜色有一点问题。在objective-c中很容易:
-(NSColor *)colorForKey:(NSString *)key{
NSData *data;
NSColor *color;
data = [[NSUserDefaults standardUserDefaults] objectForKey:key];
color= [NSUnarchiver unarchiveObjectWithData:data];
if( ! [color isKindOfClass:[NSColor class]] ){
color = nil;
}
return color;
}
-(void)setColor:(NSColor *)color forKey:(NSString *)key{
NSData *data = [NSArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:key];
}
上面的代码在objective-c中运行良好,但是当我尝试用swift编写相同的代码时,我在从NSUserDefaults读取颜色时收到错误。
func saveColorForKey (color:NSColor , key:NSString ) {
var data:NSData = NSData()
data = NSArchiver.archivedDataWithRootObject(color)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: key)
}
func colorForKey(key:NSString) -> NSColor{
var data: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey(key)
var color: AnyObject? = NSUnarchiver.unarchiveObjectWithData(data? as NSData)
return color as NSColor
}
谢谢,对不起我的英语!
【问题讨论】:
-
如果我的回答是真的,请打勾,以便将来帮助其他人。谢谢
标签: objective-c swift nsuserdefaults osx-yosemite