Objective-C 在 NSUserDefaults 中保存 NSColor
Posted
技术标签:
【中文标题】Objective-C 在 NSUserDefaults 中保存 NSColor【英文标题】:Objective-C save NSColor in NSUserDefaults 【发布时间】:2011-02-16 14:18:06 【问题描述】:如何保存点的颜色,以便在打开和关闭应用程序时,点是用户上次设置的颜色?
有人可以向我解释如何使用NSUserDefaults
以及在哪些方法中声明NSUserDefaults
。
到目前为止,我有这个:
NSData *data = [NSArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyColor"];
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyColor"];
NSColor *color = [NSUnarchiver unarchiveObjectWithData:data];
我遵循的教程链接: http://www.mactech.com/articles/mactech/Vol.25/25.04/2504RoadtoCode/index.html
【问题讨论】:
不清楚你在问什么。您上面的代码看起来不错(除非您可能应该在取消归档之前向 (NSColor *) 添加强制转换)。您到底在寻找什么? The app displays a circle who's color is controlled by a color well, what I want do is, when the color well is selected and a new color is chosen I want to save that new color and set the圈到那个颜色。然后当应用程序再次重新打开时,我想将圆圈的颜色设置为保存的颜色。 【参考方案1】:这是我用的:
- (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];
[BFChatWindow refresh];
【讨论】:
导致问题的不是 Dvorak(我使用它),而是代码格式中的制表符而不是空格。 @Abizern 当我复制粘贴时它不起作用,这是 dvorak 和堆栈溢出的问题 @Abizern 可能是因为我使用 Dvorak - Qwerty,dvorak 打字布局,但 qwerty cmd + 其他 - 因为大多数命令都适用于 qwerty 布局,所以更容易以上是关于Objective-C 在 NSUserDefaults 中保存 NSColor的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 中保存和读取 NSUserdefaults 中的数组数组?