iOS開發中NSUserDefaults的一些用法


 

NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

 

if([[NSUserDefaults standardUserDefaults] objectForKey:@"message"]==nil){

[[NSUserDefaults standardUserDefaults] setObject:@"This is message" forKey:@"message"];

}

代碼意思是判斷NSUserDefaults的“message”key 在dictionaryRepresentation中是否存在,如果不存在就

設置“message”。

在加上句[[NSUserDefaults standardUserDefaults] synchronize];,這樣這個設置就存到默認參數中了。

 

 

也見過別人把默認參數的設置寫到applicationDidFinishLaunching注冊的

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

{

NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys:

@"This is message", @"message",

nil];

 

[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];

[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:defaultValues];

}

 

 

本地存儲數據簡單的說有三種方式:數據庫、NSUserDefaults和文件。

NSUserDefaults用於存儲數據量小的數據,例如用戶配置。並不是所有的東西都能往里放的,只支持:NSString,NSNumber, NSDate, NSArray, NSDictionary,詳細方法可以查看類文件。

NSUserDefaultsstandardUserDefaults用來記錄一下永久保留的數據非常方便,不需要讀寫文件,而是保留到一個NSDictionary字典里,由系統保存到文件里,系統會保存到該應用下的/Library/Preferences/gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults數據不會被系統寫入到該文件,不過可以使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,來避免數據的丟失。

一、將數據存儲到NSUserDefaults:

//UISwitch

- (IBAction)switchChanged:(id)sender{

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

        [userDefaults setBool:_theSwitch.on forKey:@"switchValue"];

}

 

//UITextField

- (IBAction)inputChanged:(id)sender{

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

        [userDefaults setObject:_textField.text forKey:@"inputValue"];

}

 

二、讀取NSUserDefaults中的數據:

//UISwitchNSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];BOOL sw = [userDefaults boolForKey:@"switchValue"];[_theSwitch setOn:sw];//UITextFieldNSString *str = [userDefaults stringForKey:@"inputValue"];[_textField setText:str];
registerDefaults:方法是注冊偏好設置的子集,它是不寫入到plist文件中的,但在ND中取確實能取到。
也就是說plist文件中看到的數據是你顯示的設置進去的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM