標籤:
喜好設定的詳解:
用途:主要用來儲存使用者系統的裝置資訊,但有的時候也可以在程式的任何地方用來儲存資料,作為全域資料來訪問,例如視圖切換需要進行登入時。
喜好設定的寫入:•很多iOS應用都支援喜好設定,比如儲存使用者名稱、密碼、字型大小等設定,iOS提供了一套標準的解決方案來為應用加入喜好設定功能•每個應用都有個NSUserDefaults執行個體,它是一個單例對象,通過它來存取喜好設定,設定資訊都是索引值對的形式。•例如:儲存使用者名稱、字型大小、是否自動登入
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"itcast.cn" forKey:@"userName"];
[defaults setFloat:18.0f forKey:@"fontSize"];
[defaults setBool:YES forKey:@"autoLogin"];
喜好設定的讀取:
// 讀取系統偏好
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userName = [defaults objectForKey:@"userName"];
float fontSize = [defaults floatForKey:@"fontSize"];
BOOL autoLogin = [defaults boolForKey:@"autoLogin"];
注意:UserDefaults設定資料時,不是立即寫入,而是根據時間戳記定時地把緩衝中的資料寫入本地磁碟。所以調用了set方法之後資料有可能還沒有寫入磁碟,應用程式就終止了。
出現以上問題,可以通過調用synchornize同步方法強制寫入:
[defaults synchronize];
喜好設定的使用:
1.設定使用者登入資訊(喜好設定)
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:@"admin" forKey:@"userName"]; //登入使用者名稱
[userDefaults setObject:[NSDate date] forKey:@"loginDate"]; //登入時間
[userDefaults setInteger:2 forKey:@"times"]; //登入次數
2.將設定的使用者資訊強制儲存到磁碟沙箱目錄下的preference檔案中
[userDefaults synchronize];
3.讀取喜好設定
NSUserDefaults *userDefaluts = [NSUserDefaults standardUserDefaults];
NSString *userName = [userDefaluts objectForKey:@"userName"];
NSDate *date = [userDefaluts objectForKey:@"loginDate"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSInteger times = [userDefaluts integerForKey:@"times"];
NSLog(@"userName:%@,date:%@,times:%ld",userName,[dateFormatter stringFromDate:date],times);
示範結果:
2015-09-20 10:18:33.529 02-使用者喜好設定[601:20685] userName:admin,date:2015-09-20 10:18:33,times:2
iOS: 喜好設定的詳解和使用