iOS 偏好設置 NSUserDefault

      網友投稿 716 2022-05-29

      NSUserDefaults類提供了一個與系統進行交互的編程接口,用來存儲、恢復應用程序的偏好設置和配置數據等,適合存儲輕量級的本地數據。比如保存一個登陸界面的數據,例如用戶名、密碼之類的。

      如果使用plist文件存儲,那么就要自己創建文件,讀取文件,很麻煩。同時NSUserDefaults的緩存還避免了再每次讀取數據的時候都打開數據庫的操作.而用NSUserDefaults則不用管這些東西,直接存儲或讀取就好了。

      NSUserDefaults是單例的,同時也是線程安全的。

      NSUserDefaults支持的數據類型有:BOOL、NSNumber(Integer、Float、Double)、NSString、NSData、NSDate、NSArray、NSDictionary、NSObject

      注意:

      (1)自定義類可以通過NSData的方式進行存儲,不過要實現NSCoding這個protocol才行,NSObject

      (2)系統會保存到該應用下的/Library/Preferences/gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults數據不會被系統寫入到該文件,所以,要使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件里,來避免數據的丟失。

      (3)從NSUserDefaults返回的值并不是不可改變的,即使是存儲的時候使用可變值,當你使用 stringForKey: 方法獲取的值,這個值仍然是不可改變的,如果要改變需使用duplicated。

      代碼如下:

      //

      // ViewController.m

      // NSUserDefaultsDemo

      //

      // Created by 555chy on 6/25/16.

      // Copyright ? 2016 555chy. All rights reserved.

      //

      #import "ViewController.h"

      @interface ViewController ()

      @end

      @implementation ViewController

      - (void)viewDidLoad {

      iOS 偏好設置 NSUserDefault

      [super viewDidLoad];

      // Do any additional setup after loading the view, typically from a nib.

      //NSUserdefaults支持的數據格式有:BOOL、NSNumber(integer、float、double)、NSString、NSDate、NSArray、NSDictionary等

      NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

      //寫入數據

      bool sBOOL = YES;

      NSInteger sInteger = 1;

      float sFloat = 2.3;

      double sDouble = 4.5;

      NSString *sString = @"string";

      //const char *str = "abcdefg";

      //NSData *sData = [NSData dataWithBytes:str length:strlen(str)];

      NSData *sData = [sString dataUsingEncoding:NSUTF8StringEncoding];

      NSDate *sDate = [NSDate date];

      NSArray *sArray = [NSArray arrayWithObjects:@"array1", @"array2", @"array3", nil];

      NSDictionary *sDictionary = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"chy", @"24", @"YES", nil] forKeys:[NSArray arrayWithObjects:@"name", @"age", @"isMale", nil]];

      [userDefaults setBool:sBOOL forKey:@"bool"];

      [userDefaults setInteger:sInteger forKey:@"integer"];

      [userDefaults setFloat:sFloat forKey:@"float"];

      [userDefaults setDouble:sDouble forKey:@"double"];

      [userDefaults setObject:sString forKey:@"string"];

      [userDefaults setObject:sData forKey:@"data"];

      [userDefaults setObject:sDate forKey:@"date"];

      [userDefaults setObject:sArray forKey:@"array"];

      [userDefaults setObject:sDictionary forKey:@"dictionary"];

      //這里建議同步存儲到磁盤中,但不是必須的,因為數據會自動緩存到內存中

      [userDefaults synchronize];

      //讀取數據

      BOOL gBOOL;

      NSInteger gInteger;

      float gFloat;

      double gDouble;

      NSString *gString;

      NSData *gData;

      NSDate *gDate;

      NSArray *gArray;

      NSDictionary *gDictionary;

      gBOOL = [userDefaults boolForKey:@"bool"];

      gInteger = [userDefaults integerForKey:@"integer"];

      gFloat = [userDefaults floatForKey:@"float"];

      gDouble = [userDefaults doubleForKey:@"double"];

      gString = [userDefaults stringForKey:@"string"];

      gData = [userDefaults objectForKey:@"data"];

      gDate = [userDefaults objectForKey:@"date"];

      gArray = [userDefaults objectForKey:@"array"];

      gDictionary = [userDefaults objectForKey:@"dictionary"];

      NSLog(@"gBool = %d", gBOOL);

      NSLog(@"gInteger = %ld", gInteger);

      NSLog(@"gFloat = %f", gFloat);

      NSLog(@"gDouble = %lf", gDouble);

      NSLog(@"gString = %@", gString);

      NSLog(@"gData = %@", [[NSString alloc] initWithData:gData encoding:NSUTF8StringEncoding]);

      NSLog(@"gDate = %@", gDate);

      NSLog(@"gArray = %@", gArray);

      NSLog(@"gDictionary = %@", gDictionary);

      }

      - (void)didReceiveMemoryWarning {

      [super didReceiveMemoryWarning];

      // Dispose of any resources that can be recreated.

      }

      @end

      iOS

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:dart設計模式之原型模式
      下一篇:10.13 Linux dumpe2fs命令:查看文件系統信息
      相關文章
      亚洲综合av一区二区三区| 亚洲综合一区二区精品久久| 伊人久久五月丁香综合中文亚洲 | 国产AV旡码专区亚洲AV苍井空| 337p日本欧洲亚洲大胆精品555588 | 亚洲AV一区二区三区四区| 色噜噜亚洲男人的天堂| 亚洲中文字幕无码av在线| 亚洲女人初试黑人巨高清| 亚洲日产2021三区在线| 亚洲欧洲日产专区| 亚洲国产成人va在线观看网址| 亚洲综合色一区二区三区小说| 精品亚洲aⅴ在线观看| 久久亚洲精品无码AV红樱桃| 在线免费观看亚洲| 亚洲毛片一级带毛片基地| 亚洲成人动漫在线观看| 亚洲一级片在线播放| 亚洲校园春色另类激情| 国内精品久久久久影院亚洲 | 一本色道久久综合亚洲精品蜜桃冫| 亚洲精品国产国语| 亚洲精华国产精华精华液| 午夜亚洲WWW湿好爽| 在线a亚洲v天堂网2018| 国产亚洲蜜芽精品久久| 亚洲国产精品嫩草影院久久| 亚洲人成网站在线观看青青| 久久影视国产亚洲| 久久亚洲精品视频| 99ri精品国产亚洲| 亚洲一区免费在线观看| 亚洲女子高潮不断爆白浆| 怡红院亚洲红怡院在线观看| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 青青草原亚洲视频| 亚洲av永久无码精品表情包| 夜夜亚洲天天久久| 国产成人精品日本亚洲专区6| 亚洲AⅤ男人的天堂在线观看|