よく使うのでメモ
まず型を指定しない場合はObjective-Cのオブジェクト同様、以下のメソッドで利用する。
- (id)objectForKey:(NSString *)defaultName;
- (void)setObject:(id)value forKey:(NSString *)defaultName;
- (id)loadSetting:(NSString *)key {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
return [defaults objectForKey:key];
}
- (void)saveSetting:(NSString *)key :(id)value {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:value forKey:key];
[defaults synchronize];
}
明示的に型を指定する場合は、castするか以下のメソッドを利用する。
- (NSString *)stringForKey:(NSString *)defaultName;
- (NSArray *)arrayForKey:(NSString *)defaultName;
- (NSDictionary *)dictionaryForKey:(NSString *)defaultName;
- (NSData *)dataForKey:(NSString *)defaultName;
- (NSArray *)stringArrayForKey:(NSString *)defaultName;
- (NSInteger)integerForKey:(NSString *)defaultName;
- (float)floatForKey:(NSString *)defaultName;
- (double)doubleForKey:(NSString *)defaultName;
- (BOOL)boolForKey:(NSString *)defaultName;
- (NSURL *)URLForKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
- (void)setFloat:(float)value forKey:(NSString *)defaultName;
- (void)setDouble:(double)value forKey:(NSString *)defaultName;
- (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
- (void)setURL:(NSURL *)url forKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
ちなみに、カスタムクラスをそのまま保存しようとする場合はエラーになってしまうので、NSDictionary に変換する必要がある(うまくcastとかできるかも知れないが・・・)。
- (BOOL)loadSettingBool:(NSString *)key {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
return [defaults boolForKey:key];
}
- (void)saveSettingBool:(NSString *)key :(BOOL)value {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:value forKey:key];
[defaults synchronize];
}
ちなみに不要になった設定は、removeObjectForKey で削除する。
- (void)removeObjectForKey:(NSString *)defaultName