У меня есть класс, который обрабатывает множество значений по умолчанию, вот как я инициализирую значения по умолчанию:
+ (void) initialize
{
NSUserDefaults* defaults=[NSUserDefaults standardUserDefaults];
NSData* colorData= [NSKeyedArchiver archivedDataWithRootObject: [NSColor orangeColor]];
NSDictionary* def= @{ @"colorKey" : colorData, ... };
[defaults registerDefaults: def];
}
Затем я делаю доступным один метод для чтения цвета по умолчанию и один метод для его установки:
- (NSColor*) color
{
NSUserDefaults* defaults=[NSUserDefaults standardUserDefaults];
NSData* colorData= [defaults objectForKey: colorKey];
return [NSKeyedUnarchiver unarchiveObjectWithData: colorData];
}
- (void) setColor: (NSColor*) color
{
NSUserDefaults* defaults=[NSUserDefaults standardUserDefaults];
NSData* colorData= [NSKeyedArchiver archivedDataWithRootObject: color];
[defaults setObject:colorData forKey: colorKey];
}
Но если внутри метода color: я печатаю цвет, иногда это класс NSColorWell, и это создает проблемы внутри приложения.