NSUserDefaults/NSCodingによる設定情報の保存 (2/8)
作成:2013-03-25 08:16
更新:2013-03-25 08:16
更新:2013-03-25 08:16
■NSUserDefaults利用の実際
では、実際にNSUserDefaultsを利用する例を挙げておきましょう。ここでは一例として、NSDictionaryにメモデータを追加して保存していくプログラムを考えてみましょう。
下にサンプルのソースコード(main.m)を掲載しておきます。実行すると、コマンドの入力待ち状態となります。「a」とタイプすると、データを追加します。キーとなるテキストと、メモの内容をそれぞれ書いてReturnすればそれが追加されます。「f」とタイプすると検索モードになり、調べたいキー名をタイプしてReturnすると、そのキーのメモを表示します。何も入力せずにReturnすればプログラムを終了します。
やっていることはそれほど難しいものではありません。プログラム開始時にNSUserDefaultsインスタンスを取得し、dictionaryForKey:で@"memo"という値を取得します。そしてこれを元にNSMutableDictionaryを作成しておきます。これにメモの内容を追加したり、ここから検索したりするわけです。
プログラムを終了する際にはsetObject: forKey:メソッドでmemoを@"memo"というキーでNSUserDefaultsに設定し、synchronizeでファイルと同期を取ります。これでメモはすべてファイルに保存されました!
下にサンプルのソースコード(main.m)を掲載しておきます。実行すると、コマンドの入力待ち状態となります。「a」とタイプすると、データを追加します。キーとなるテキストと、メモの内容をそれぞれ書いてReturnすればそれが追加されます。「f」とタイプすると検索モードになり、調べたいキー名をタイプしてReturnすると、そのキーのメモを表示します。何も入力せずにReturnすればプログラムを終了します。
やっていることはそれほど難しいものではありません。プログラム開始時にNSUserDefaultsインスタンスを取得し、dictionaryForKey:で@"memo"という値を取得します。そしてこれを元にNSMutableDictionaryを作成しておきます。これにメモの内容を追加したり、ここから検索したりするわけです。
プログラムを終了する際にはsetObject: forKey:メソッドでmemoを@"memo"というキーでNSUserDefaultsに設定し、synchronizeでファイルと同期を取ります。これでメモはすべてファイルに保存されました!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
#import <Foundation/Foundation.h> NSString* input(); int main (int argc, const char * argv[]) { @autoreleasepool { NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; NSDictionary* memodata = [defaults dictionaryForKey:@"memo"]; NSMutableDictionary* memo = [NSMutableDictionary dictionaryWithDictionary:memodata]; BOOL flg = YES; while (flg) { printf("[a]dd or [f]ind: "); NSString* cmd = input(); if ([cmd isEqualToString:@""]) { flg = NO; } if ([cmd isEqualToString:@"a"]) { printf("key:"); NSString* key = input(); printf("memo:"); NSString* memostr = input(); [memo setValue:memostr forKey:key]; printf("saved...\n"); } if ([cmd isEqualToString:@"f"]) { printf("find: "); NSString* fstr = input(); NSString* memostr = [memo valueForKey:fstr]; printf("%s\n",[memostr cStringUsingEncoding:NSUTF8StringEncoding]); } } [defaults setObject:memo forKey:@"memo"]; [defaults synchronize]; printf("bye..."); } return 0; } // テキストの入力用関数 NSString* input() { char str[255]; fgets(str, 255, stdin); NSString* result = [NSString stringWithUTF8String:str]; return [result stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; }
※関連コンテンツ
「初心者のためのObjective-Cプログラミング入門」に戻る