novi's Blog

Mac、iPhone、オーディオなどの覚え書き

[UIKit] Tips ユーザーデフォルトを使う

Lyricsの設定パネルを作っていたんですが、そこでUserDefaultsを使用したのでその使い方。

まず、設定ファイルがないときのために、初期設定のUserDefaultsを作ります。

UIApplicationのサブクラスをオーバーライド。
+(void)initialize{
NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];

//初期設定
[defaultValues setValue:[NSNumber numberWithBool:YES] forKey:LYPrefEmbed];
[defaultValues setValue:[NSNumber numberWithInt:24] forKey:LYPrefFontSize];
//
[[NSUserDefaults standardUserDefaults] registerDefaults: defaultValues];
NSLog(@"Register UserDefaults Default");
}


続いて設定を読み出すとき。
standardUserDefaultsを使用するとそのアプリ標準のUserDefaultsのインスタンスが作成されるのでどこから使用してもかまいません。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:[[_fontSetCell value] intValue] forKey:LYPrefFontSize];

こんな感じで値を書き込みます。
ここでは、キーLYPrefFontSizeに対してInt型の値を書き込んでいます。
(ただし、まだファイルには反映されません。)

読み出すときはこう。
[defaults integerForKey:LYPrefFontSize]

キーLYPrefFontSizeに対してInt型の値を読み出しています。
defaultsは上と同じもの。

ここではInt型のみを例にとっていますが、他にもBool型などいろいろ対応しています。
扱い方はAppleのNSUserDefaultsドキュメントを見てください。

Cocoaを使っている人は分かると思いますが、設定ファイル自体は"~/Library/Preferences/xxx.plist"に書き込まれます。
xxxは自分のIdentifierです。(Info.plistで設定したもの)
jp.novi.Lyricsなど。

それから、その設定ファイルは値を書き込んでからすぐにはファイルへ反映されません。
普通はシステムが適当にやってくれますが、自分で強制的にファイルを更新したいときは、
[defaults synchronize];

を行います。

サンプルは iPhoneDevDocs なんかにあるので見てみるといいかと思います。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://novi.dtiblog.com/tb.php/185-c58b296f

 | HOME | 

プロフィール


novi


Author:novi
移行しました。新しいアドレスはこちらになります。ブックマークの変更をお願いします。
このページは残しておきます。


学生。♂。
飽きやすいのでネタがころころ変わります。最近は iPhone の hack と工作。









月別アーカイブ


DTIブログ
ブログでアフィリエイト


DTIブログポータルへ

このブログを通報

カレンダー

10 | 2009/11 | 12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

Twitter


follow novi_ at http://twitter.com


カテゴリー


最近のエントリー


最近のコメント


最近のトラックバック


なかのひと


ジオターゲティング


ジオターゲティング


リンク


RSSリンク


PoweredBy

Powered By DTIブログ


DTIミニモブログ


検索フォーム