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