【Objective-C】簡単便利なデータの保存読み込み!NSUserDefaultsについて(その1、全般)


今回はNSUserDefaultsについてです。

NSUserDefaultsはアプリのデータを簡単に保存取得できる方法です。
ふつうデータを読み書きしようとするとファイルパスの設定やらファイルの形式をいろいろ決めないと行けません。
NSUserDefaultsはそのような面倒な設定なしにアプリ内にXML形式のplistファイルを作成してくれます。
簡単なデータはこれを使いましょう。
少々複雑なデータ(2次元以上のデータ)も工夫次第でこれで可能です。(工夫は「その3」で)

次のようにして使います。

<宣言>

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];


<保存>
※forKeyは任意の文字列

//NSString、NSDate(日付型)、NSData、NSNumber、NSArray、NSDictionaryの保存
//(すべてsetObjectでセットします)

[defaults setObject:@"文字列" forKey:@"KEY_STRING"];

// 数値(int、Float、Double)の保存
[defaults setInteger:1234 forKey:@"KEY_INT"];
[defaults setFloat:12.34 forKey:@"KEY_FLOAT"];
[defaults setDouble:123.4 forKey:@"KEY_DOUBLE"];

//BOOLの保存
BOOL bl = YES;
[defaults setBool:bl forKey:@"KEY_BOOL"];

//(重要)UserDefaultsへの反映
//これをしないと反映が任意のタイミングになるので設定した方が無難

[defaults synchronize];


セットするときの表記がデータ型によって微妙に違うのでちょっと面倒ですね。。。
NSUserDefaultsに保存してもすぐには反映されないのでその都度synchronizeを使って反映をさせましょう。
多分初心者の方はこれを使わないことで反映されず焦ると思います><
デフォルトですぐに反映してくれればいいものを!

<取得>

(注意)キーに該当する値がない場合は、数値型:0、文字列型:nilとなるみたい

// NSString、NSDate(日付型)、NSData、NSNumber、NSArray、NSDictionaryの保存
NSString *s = [defaults stringForKey:@"KEY_STRING"];
NSDate *date = [defaults objectForKey:@"KEY_DATE"];
NSData *data = [defaults dataForKey:@"KEY_DATA"];
NSNumber *num = [defaults objectForKey:@"KEY_NUMBER"];
NSArray *array = [defaults arrayForKey:@"KEY_ARRAY"];
NSDictionary *dic = [defaults dictionaryForKey:@"KEY_DICTIONARY"];

// 数値(int、Float、Double)の取得
int i = [defaults integerForKey:@"KEY_INT"];
float f = [defaults floatForKey:@"KEY_FLOAT"];
double d = [defaults doubleForKey:@"KEY_DOUBLE"];

//BOOLの取得
BOOL b = [defaults boolForKey:@"KEY_BOOL"];


保存のときと違ってNSString、NSDate、NSData、NSNumber、NSArray、NSDictionaryで取得方法が異なるのでややこしいですね。(NSDateとNSNumberは同じ)

他の型(NSMutableArray、クラスなど)を保持させたい場合は一旦NSData型に変換してから保存します。
取得時もNSData型として 読み込んだ後に型変換を行う必要があるようです。

<削除>

[defaults removeObjectForKey:@"KEY_STRING"];



↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
関連記事

コメントの投稿

非公開コメント

プロフィール

てぃー

Author:てぃー
詳しい自己紹介:こちら
Twitter:@teapipin


follow us in feedly 
にほんブログ村 IT技術ブログへ にほんブログ村 PC家電ブログへ
現在の閲覧者数:

ブログ内検索
今日のアクセス数の多い記事
カレンダー

06月 | 2017年07月 | 08月
- - - - - - 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 31 - - - - -
過去記事ダイジェスト
お知らせ

ツイッター分析の分析結果が和歌山大学防災研究教育センターの論文に引用
防災の研究において評価!

2015年版ツイッター分析(世界編)が始動!
今回は世界の国別・言語別ツイートを分析!

ツイッター分析の分析結果が慶應義塾大学有名教授の研究論文などに引用
文系の研究までも制覇!

Interval Timer EX
有名雑誌「Mac Fan 2015月2月号」に「インターバルタイマーEX」が3度目の掲載!!ポモドーロテクニックに有効!

自作Macアプリ3部作が2014年 Vector 年間ダウンロードランキング Mac トップ100にすべてランクイン

TimeCalcを公開しています!
時間計算、年齢計算、学歴欄作成など。

ツイッター分析の分析結果が人工知能の研究に!
ブログが学会発表で引用されました。

今まで開発したiPhoneアプリのソースコードを公開しています!
勉強に役立ててください。


2013年 Vector 年間ダウンロードランキング Mac トップ100に「デジカメ変更日を撮影日に一括変更 for Mac」と「インターバルタイマーEX」がランクイン

Interval Timer EX
有名雑誌「Mac Fan 2013月4月号」に「インターバルタイマーEX」が2度目の掲載!!

リアルタイムツイッター地図
リアルタイムツイッター地図を公開しています!
位置情報付きツイートをリアルタイムに表示します。

新たなツイッター分析としてイベントツイート分析を行っています!

2012年8月1日(水)開催の「Twitter勉強会」で発表
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack from teapipin


Interval Timer EX
有名雑誌「Mac Fan 2012月3月号」に「インターバルタイマーEX」が掲載!!



 

はてなブックマークの人気記事
ツイート&いいね!ランキング