偏好設(shè)置是專門用來保存應(yīng)用程序的配置信息的, 一般情況不要再偏好設(shè)置中保存其他數(shù)據(jù)
如果利用系統(tǒng)的偏好設(shè)置來存儲(chǔ)數(shù)據(jù), 默認(rèn)就是存儲(chǔ)在Preferences文件夾下面的
偏好設(shè)置會(huì)將所有的數(shù)據(jù)保存到同一個(gè)文件中
// 獲取NSUserDefaults對(duì)象
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 保存數(shù)據(jù)(如果設(shè)置數(shù)據(jù)之后沒有同步, 會(huì)在將來某一時(shí)間點(diǎn)自動(dòng)將數(shù)據(jù)保存到Preferences文件夾下面)
[defaults setObject:@"solozyx" forKey:@"name"];
[defaults setObject:@"man" forKey:@"gender"];
[defaults setInteger:99 forKey:@"age"];
[defaults setDouble:172.1 forKey:@"height"];
// 讓NSUserDefaults立刻保存數(shù)據(jù)
[defaults synchronize];
注意:UserDefaults設(shè)置數(shù)據(jù)時(shí),不是立即寫入契吉,而是根據(jù)時(shí)間戳定時(shí)地把緩存中的數(shù)據(jù)寫入本地磁盤畏妖。所以調(diào)用了setXXX 方法之后數(shù)據(jù)有可能還沒有寫入磁盤應(yīng)用程序就終止了壮啊。出現(xiàn)以上問題普筹,可以通過調(diào)用synchornize方法強(qiáng)制寫入
[defaults synchornize];
// 1.獲取NSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 2.通過NSUserDefaults獲取保存的數(shù)據(jù)
NSString *name = [defaults objectForKey:@"name"];
NSString *gender = [defaults objectForKey:@"gender"];
int age = (int)[defaults integerForKey:@"age"];
float height = (float)[defaults floatForKey:@"height"];
NSLog(@"%@", name);
NSLog(@"%@", gender);
NSLog(@"%d", age);
NSLog(@"%f", height);
//2016-08-23 13:49:08.303 偏好設(shè)置[88739:1309541] solozyx
//2016-08-23 13:49:08.303 偏好設(shè)置[88739:1309541] man
//2016-08-23 13:49:08.303 偏好設(shè)置[88739:1309541] 99
//2016-08-23 13:49:08.304 偏好設(shè)置[88739:1309541] 172.100006