寵物展會2025年時間表
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 {
[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小時內刪除侵權內容。