Objective-C сохранить NSColor в NSUserDefaults - PullRequest
1 голос
/ 16 февраля 2011

Как сохранить цвет точки, чтобы при открытии и закрытии приложения точка была тем цветом, который был последний раз задан пользователем?

Может ли кто-нибудь объяснить мне, как использовать 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

1 Ответ

5 голосов
/ 16 февраля 2011

Вот что я использую:

- (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];
}
...