NSUserDeaultsは、アプリのデータを保存しておくためのクラスです。KeyとDataをペアにして扱います。しかし、NSUserDefaultsを直接扱うとKeyの文字列を間違えたり、Dataの型を間違えたりするので、管理クラスを書いています。しかし、アプリごとに毎回管理クラスを書くのは面倒なので、自動生成するプログラムを作りました、rubyで。
コードはこちら
使い方
まず、生成元になるファイルを記述ます。
UDManager.h
NSString *itIsLongName; NSNumber *number; NSArray *array; NSDate *date; NSInteger i; double d;
以下の制限があります。
・一行に複数の変数名をかけない
・一行に複数の宣言はできない
・最後の改行は必須
再生元となるファイルのを作成したら、生成をします。
$ ruby UserDefaultsCreator.rb [生成元のファイル] [生成先のディレクトリ]
これで生成されたはずです。ちなみに生成されたファイルのヘッダーを生成元のファイルとして扱うこともできます。
生成された管理クラスの使い方はコードを読めばいいじゃない。
オプション
| Option | 引数 | 説明 |
|---|---|---|
| -s, - shortthatd | 速記を使用 | |
| -i, - no_init | 初期化を挿入しないでください | |
| -h,- help | このヘルプを表示して終了 | |
| -f,- file_name | FILENAME | ファイル名を指定します |
対応している型
- NSString *
- NSNumber *
- NSArray *
- NSDictionary *
- NSData *
- NSDate *
- NSInteger
- double
- float
- BOOL
生成例
UDManager.h
#import <Foundation/Foundation.h> #define kItIsLongName @"itIsLongName" #define kNumber @"number" #define kArray @"array" #define kDict @"dict" #define kData @"data" #define kDate @"date" #define kI @"i" #define kB @"b" #define kF @"f" #define kD @"d" @interface UDManager : NSObject + (instancetype)sharedManager; - (NSString *)itIsLongName; - (void)setItIsLongName:(NSString *)itIsLongName; - (NSNumber *)number; - (void)setNumber:(NSNumber *)number; - (NSArray *)array; - (void)setArray:(NSArray *)array; - (NSDate *)date; - (void)setDate:(NSDate *)date; - (NSInteger)i; - (void)setI:(NSInteger)i; - (BOOL)b; - (void)setB:(BOOL)b; - (float)f; - (void)setF:(float)f; - (double)d; - (void)setD:(double)d; @end
UDManager.m
#import "UDManager.h"
@implementation UDManager {
NSUserDefaults *defaults;
}
+ (instancetype)sharedManager {
static UDManager *sharedManager_ = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedManager_ = UDManager.new;
});
return sharedManager_;
}
- (id)init {
self = [super init];
if (self != nil) {
defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:@{
kItIsLongName : @"",
kNumber : @0,
kArray : @[],
kDate : [NSDate date],
kI : @0,
kB : @0,
kF : @0,
kD : @0,
}];
}
return self;
}
- (NSString *)itIsLongName {
return [defaults objectForKey:kItIsLongName];
}
- (void)setItIsLongName:(NSString *)itIsLongName {
[defaults setObject:itIsLongName forKey:kItIsLongName];
[defaults synchronize];
}
- (NSNumber *)number {
return [defaults objectForKey:kNumber];
}
- (void)setNumber:(NSNumber *)number {
[defaults setObject:number forKey:kNumber];
[defaults synchronize];
}
- (NSArray *)array {
return [defaults objectForKey:kArray];
}
- (void)setArray:(NSArray *)array {
[defaults setObject:array forKey:kArray];
[defaults synchronize];
}
- (NSDate *)date {
return [defaults objectForKey:kDate];
}
- (void)setDate:(NSDate *)date {
[defaults setObject:date forKey:kDate];
[defaults synchronize];
}
- (NSInteger)i {
return [defaults integerForKey:kI];
}
- (void)setI:(NSInteger)i {
[defaults setInteger:i forKey:kI];
[defaults synchronize];
}
- (BOOL)b {
return [defaults boolForKey:kB];
}
- (void)setB:(BOOL)b {
[defaults setBool:b forKey:kB];
[defaults synchronize];
}
- (float)f {
return [defaults floatForKey:kF];
}
- (void)setF:(float)f {
[defaults setFloat:f forKey:kF];
[defaults synchronize];
}
- (double)d {
return [defaults doubleForKey:kD];
}
- (void)setD:(double)d {
[defaults setDouble:d forKey:kD];
[defaults synchronize];
}
@end