天天看點

NSUserDefaults standardUserDefaults的使用

在本地存儲資料簡單的說有三種方式:資料庫、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中的資料:

//UISwitch

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

BOOL sw = [userDefaults boolForKey:@"switchValue"];

[_theSwitch setOn:sw];

//UITextField

NSString *str = [userDefaults stringForKey:@"inputValue"];

[_textField setText:str];

registerDefaults:方法是注冊偏好設定的子集,它是不寫入到plist檔案中的,但在ND中取确實能取到。

也就是說plist檔案中看到的資料是你顯示的設定進去的。

比如調用setxxx方法