// // NSUserDefaults+Additions.m // Perforce // // Created by Adam Czubernat on 13.06.2013. // Copyright (c) 2013 Perforce Software, Inc. All rights reserved. // #import "NSUserDefaults+Additions.h" NSString * const NSUserDefaultsVersion = @"NSUserDefaultsVersion"; @implementation NSUserDefaults (Additions) static NSUserDefaults *defaults; + (void)loadDefaultsWithName:(NSString *)name { // Load default values NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"plist"]; NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path]; [self loadDefaultsWithDictionary:dictionary]; } + (void)loadDefaultsWithDictionary:(NSDictionary *)dictionary { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; NSString *defaultsVersion = [defaults objectForKey:NSUserDefaultsVersion]; NSString *plistVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey: NSUserDefaultsVersion] ?: @"null"; if (![defaultsVersion isEqualToString:plistVersion]) [NSUserDefaults removeAllDefaults]; [defaults registerDefaults:dictionary]; [defaults setObject:plistVersion forKey:NSUserDefaultsVersion]; [defaults synchronize]; } + (void)removeAllDefaults { NSString *domainName = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domainName]; } + (id)objectForKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; return [defaults stringForKey:defaultName]; } + (void)setObject:(id)object forKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:object forKey:defaultName]; [defaults synchronize]; } + (void)removeObjectForKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; [defaults removeObjectForKey:defaultName]; [defaults synchronize]; } + (NSColor *)colorForKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; static NSMutableDictionary *colorCache; if (!colorCache) colorCache = [NSMutableDictionary dictionary]; NSString *colorName = [defaults stringForKey:defaultName]; NSColor *color = [colorCache objectForKey:colorName]; if (!color) { color = [NSColor colorWithHexString:colorName]; if (color) [colorCache setObject:color forKey:colorName]; } return color; } + (NSInteger)integerForKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; return [defaults integerForKey:defaultName]; } + (CGFloat)floatForKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; return [defaults floatForKey:defaultName]; } + (BOOL)boolForKey:(NSString *)defaultName { if (!defaults) defaults = [NSUserDefaults standardUserDefaults]; return [defaults boolForKey:defaultName]; } @end