iOS:NSUserDefaults注意すべき点特に最初にデフォルト値を設定する方法

2785 ワード

原文の住所:http://blog.csdn.net/totogogo/article/details/7473851
NSUserDefaultsは、いくつかのアプリセットを記憶するために使用されます.アプリを閉じてから開くと、以前に記憶されていたセットはNSUserDefaultsから読み込むことができます.パスワードはNSUserDefaultsに保存しない方がいいです.保存するにはAES/DESで暗号化して保存しなければなりません.より安全な方法は? https://github.com/ldandersen/scifihifi-iphone
パスワードをNSUserDefault or plistに格納した結果: http://www.shushao.com/news/info/item/203510-ios
example 1:NSUserDefaultsの「カラー」セットを読み込みます.
[[NSUserDefaults standardUserDefaults] stringForKey:@"color"];
example 2:NSUserDefaultsに書き込む"カラー"settingは"red"です.
[[NSUserDefaults standardUserDefaults] setObject:@"red" forKey:@"color"];
またNSUserDefaultsはregister Defaultsの方法を提供しています.通常はappDelegateのdidFinish LaunchingWithOptionsで呼び出します.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys: @"blue", @"color",nil]; 
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
    
    return YES;
}
register Defaults
メソッド呼び出し時にチェックします. NSUserDefaultsに同じkeyが既に存在していますか?例を挙げます
1初めてrunの上のアプリを見ると、NSUserDefaultsに「カラー」=「ブルー」が書き込まれます.
2そしてあなたのアプリが呼び出されました.
[[NSUserDefaults standardUserDefaults] setObject:@"red" forKey:@"color"];
  この時NSUserDefaultsに"カラー"="red"
3.exitアプリand register Defaults方法はまだ呼び出されますが、“カラー”keyは既に存在していますので、NSUserDefaultsには書き込みません.
  この時NSUserDefaultsに"カラー"="red"
4.register Defaultsを修正する方法は
    NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys: @"black", @"color",nil]; 
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
  そして新たにrun apした後もNSUserDefaultsには依然として"カラー"="red"があります.
5. register Defaults方法を修正します.
NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys: @"black", @"color",@"tomson", @"username",nil]; 
    [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
  その後もNSUserDefaultsの中では相変わらず"red"ですが、a pair of key-value: username=tomson
注意:
*If you terminate your ap by pressing“Stop”in Xcode(in the Simultor on the device)、your User Defaults might get saved
*NSUserDefaultsはexitアプリの後に保存されたことがありません.接触したという人がいます.コードを呼び出して解決策を提供します.
ref links:
http://stackoverflow.com/questions/6033385/nsuserdefaults-not-being-saved-in-simulator
http://stackoverflow.com/questions/2622754/why-is-nsuserdefaults-not-saving-my-values