2013年1月12日土曜日

005-保存機能(NSUserDefaults)

アプリ内でデータを保存したくなることありますよね。

ゲームのアプリならハイスコアやパラメータ。
便利ツールのアプリなら個人設定内容や履歴などなど。。

まあ、それはそれとしてハイスコアの保存って、発想がふるいですね

Webでデータを持つ方法やDBを使う方法もありますが、
今回紹介するのはNSUserDefaultsを用いた保存です。

Androidで言うところのPreference機能です。
使い方もPreferenceとだいたい同じです。

■保存する関数

-(Boolean)Save_Date:(NSString *)sKey :(NSString *)sItem{
    NSUserDefaults *oDefaults = [NSUserDefaults standardUserDefaults];
    [oDefaults setObject:sItem forKey:sKey];
    Boolean successful = [oDefaults synchronize];
    if (successful) {
        NSLog(@"%@", @"データ保存成功");
        return true;
    }
    NSLog(@"%@", @"データ保存失敗");
    return false;
}


キー(ユニークな文字列)を指定して、
そのキーに保存内容を渡して、保存します。
Dictionary感覚ですね。

[oDefaults setObject:sItem forKey:sKey];

setObjectの箇所は変数の型によってかわります。


intならsetInteger
boolならsetBool


となりますので、ご気を付けてください。

■保存内容を取得する関数

-(NSString *)Get_Date:(NSString *)sKey{
    NSUserDefaults *oDefaults = [NSUserDefaults standardUserDefaults];
    NSString *sDate = [oDefaults stringForKey:sKey];
    if (sDate) {
        return sDate;
    }
    NSLog(@"%@", @"データが存在しません。");
    return @"";
}

の取得の仕方も保存とだいたい同じです。

NSString *sDate = [oDefaults stringForKey:sKey];
stringForKeyの箇所は変数の型によってかわります。

intならintegerforKey
boolならboolforKey

となりますので、ご気を付けてください。


■保存内容を消す関数

-(Boolean)Delete_Date:(NSString *)sKey{
    NSUserDefaults *oDefaults = [NSUserDefaults standardUserDefaults];
    [oDefaults removeObjectForKey:sKey];
    Boolean successful = [oDefaults synchronize];
    if (successful) {
        NSLog(@"%@", @"保存データは消えました。笑");
        return true;
    }
    NSLog(@"%@", @"保存データ削除失敗!!");
    return false;
    
}

保存内容を消す関数とか個人的には使う事はないのですが、
一応用意されているので。。。
少しでもキャッシュデータを軽くするために
使うのでしょうか??

端末に保存する機能ですが、
携帯のデータはユーザー操作で簡単に
データが消えてしまうので、
大事な大事なデータは端末で管理するよりも
Webで管理して、ユーザーが復旧できる
措置を作る用にしましょうね。

とかいっても、個人で作るアプリに
そんなクオリティーを求められても
困りますが。。。。





0 件のコメント:

コメントを投稿