iOS資料持久化檔案讀寫之喜好設定,ios資料讀寫偏好

來源:互聯網
上載者:User

iOS資料持久化檔案讀寫之喜好設定,ios資料讀寫偏好

 很多iOS應用都支援喜好設定,比如儲存使用者名稱、密碼、字型大小等設定,iOS提供了一套標準的解決方案來為應用加入喜好設定功能。每個應用都有個NSUserDefaults執行個體,通過它來存取喜好設定。比如,儲存使用者名稱、字型大小、是否自動登入等。NSUserDefaults 基本上支援所有的原生資料類型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。

1. 喜好設定簡介

 大家應該記得在iOSDay35資料處理之檔案讀寫中 6> 應用程式的沙箱目錄 中寫到 Library 檔案夾下有一個檔案夾的名字叫 Preferences(偏好),用於儲存應用程式的喜好設定。當你進行喜好設定時,在這個檔案夾下就會自動建立一個與你工程名一致的plist檔案,喜好設定就儲存在這個plist檔案中。

 既然它是儲存在一個plist檔案裡的,那麼它自然也就是以索引值對的方式存在的,它的儲存形式其實就是一種XML格式的檔案:

2. 喜好設定的使用 1> 儲存資料
 1     // 建立 NSUserDefaults 對象用於設定喜好設定 2     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 3      4     // 設定偏好 5     [defaults setObject:@"zf" forKey:@"name"]; 6     [defaults setInteger:24 forKey:@"age"]; 7     [defaults setBool:YES forKey:@"gender"]; 8      9     // 立即同步10     [defaults synchronize];

  使用喜好設定對資料進行儲存之後, 它儲存到系統的時間是不確定的,會在將來某一時間點自動將資料儲存到Preferences檔案夾下面,如果需要即刻將資料存放區,必須使用立即同步 [defaults synchronize]

  在 NSUserDefaults 類中封裝了一系列的set方法用於儲存不同類型的資料

1 - (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;2 - (void)setFloat:(float)value forKey:(NSString *)defaultName;3 - (void)setDouble:(double)value forKey:(NSString *)defaultName;4 - (void)setBool:(BOOL)value forKey:(NSString *)defaultName;5 - (void)setURL:(nullable NSURL *)url forKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
 2> 讀取資料
1     // 讀取資料2     NSString *name = [defaults objectForKey:@"name"];3     int age = (int)[defaults integerForKey:@"age"];4     BOOL gender = [defaults boolForKey:@"gender"];

  列印結果

  與儲存資料相同,在 NSUserDefaults 類中封裝了一系列得到資料的方法

 1 - (nullable NSString *)stringForKey:(NSString *)defaultName; 2 - (nullable NSArray *)arrayForKey:(NSString *)defaultName; 3 - (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName; 4 - (nullable NSData *)dataForKey:(NSString *)defaultName; 5 - (nullable NSArray<NSString *> *)stringArrayForKey:(NSString *)defaultName; 6 - (NSInteger)integerForKey:(NSString *)defaultName; 7 - (float)floatForKey:(NSString *)defaultName; 8 - (double)doubleForKey:(NSString *)defaultName; 9 - (BOOL)boolForKey:(NSString *)defaultName;10 - (nullable NSURL *)URLForKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);

 3>  刪除資料

1     // 刪除喜好設定2     [defaults removeObjectForKey:@"name"];3     [defaults removeObjectForKey:@"age"];4     [defaults removeObjectForKey:@"gender"];

 使用注意:喜好設定是專門用來儲存應用程式的配置資訊的, 一般情況不要在喜好設定中儲存其他資料。如果利用系統的喜好設定來儲存資料, 預設就是儲存在Preferences檔案夾下面的,喜好設定會將所有的資料都儲存到同一個檔案中。

 和基礎資料型別 (Elementary Data Type)中的NSDictionary相似,針對同一個關鍵字對應的對象或者資料,可以對它進行重寫,重寫之後關鍵字就對應新的對象或者資料,舊的對象或者資料會被自動清理。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.