iOS - NSUserDefaults 实现数据的持久化保存
前言
在開發的時候,我們經常會遇到一些場景,需要我們持久化保存一些數據。通常我們會將相對結構化的數據保存在遠端或者本地的數據庫中,而對于相對零散的變量數據,保存在數據庫中是不太合適的。這時,接下介紹的這個方法就可以派上用場了~
NSUserDefaults 是一個系統提供的,主要用于應用數據永久保存的類,通常以單例的形式使用,可以通過 [NSUserDefaults standardUserDefaults] 來獲取單例對象,它是線程安全的。
NSUserDefaults 的數據保存在應用沙盒的 Library/Preferences/ 目錄下,并且以 .plist 文件的形式存在。
NSUserDefaults 的基本使用
支持保存的數據類型主要有,基本數據類型、NSNumber、NSString、NSArray、NSDictionary、NSDate、NSData等。如果想保存上面提到的以外的類型,就需要將其歸檔到 NSData 中進行存儲,然后使用 NSUserDefaults 進行保存。
數據存儲:
// 基本類型數據的存儲 [[NSUserDefaults standardUserDefaults] setInteger:1024 forKey:@"NSINTEGER"]; // 字符串存儲 [[NSUserDefaults standardUserDefaults] setObject:@"iOS" forKey:@"NSSTRING"]; // 數組存儲 NSArray *arr = @[@"C++", @"Java", "Pyhton"]; [[NSUserDefaults standardUserDefaults] setObject: forKey:@"NSARRAY"];數據獲取:
// 基本類型數據獲取 NSInteger integer = [[NSUserDefaults standardUserDefaults] integerForKey:@"NSINTEGER"]; // 字符串數據獲取 NSString *str = [[NSUserDefaults standardUserDefaults] stringForKey:@"NSSTRING"]; // 數組數據獲取 NSArray *arr = [[NSUserDefaults standardUserDefaults] arrayForKey:@"NSARRAY"];刪除數據:
// 根據數據的 key 進行數據刪除 [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSINTEGER"];自定義數據類型:
// 保存自定義類型數據 VGUser *user = [VGUser new]; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:user]; [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"VGUser"];// 移除自定義類型數據 [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"VGUser"];應用舉例
這里舉一個比較常用的 NSUserDefaults 應用例子,我們的 APP 在首次打開的時候,總會出現各種用戶引導動畫,它的展示時機是在用戶首次打開 APP 時,引導動畫在展示過后便不再出現,除非用戶重寫安裝該 APP。
這個時候就可以用上 NSUserDefaults,在沙盒里保存一個 BOOL 類型的 isShowed 變量,當它為 NO 的時候,我們就展示引導動畫,并將沙盒中的變量置為 YES,這就能保證引導動畫在 APP 的一次安裝中只展示一次。
// 沙盒中數據的 key static NSString const *kUserGuidanceShowed = @"kUserGuidanceShowed";- (void)showUserGuidanceAnimation {BOOL isShowed = [[NSUserDefaults standardUserDefaults] kUserGuidanceShowed];if (!isShowed) {[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kUserGuidanceShowed];// show Animation} }寫在最后
雖然 NSUserDefaults 能簡單地幫助我們實現數據的持久化保存,但是濫用 NSUserDefaults 來保存大量的數據信息,反而會影響 APP 的啟動速度。
總結
以上是生活随笔為你收集整理的iOS - NSUserDefaults 实现数据的持久化保存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P1744 采购特价商品(SPFA求最短
- 下一篇: Shell - 脚本实现控制台一键编译运