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プログラミング入門」に戻る