iOS: 偏好設置的詳解和使用


偏好設置的詳解:

用途:主要用來存儲用戶系統的設備信息,但有的時候也可以在程序的任何地方用來存儲數據,作為全局數據來訪問,例如視圖切換需要進行登錄時。

偏好設置的寫入:
•很多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

 


免責聲明!

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



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