NSUserDefaults適合存儲(chǔ)輕量級(jí)的本地?cái)?shù)據(jù)空镜。支持存儲(chǔ)的數(shù)據(jù)類型有:NSNumber(NSInteger粹庞、float咳焚、double)、NSString庞溜、NSDate革半、NSArray、NSDictionary流码、BOOL又官。
NSUserDefaults是一個(gè)單例,以key-value的形式存儲(chǔ)數(shù)據(jù)漫试。下面以代碼形式展示其用法:
<pre> //將對(duì)象存儲(chǔ)到NSUserDefaults中 NSString *userName = @"Tom"; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:userName forKey:@"userNameString"]; [userDefault synchronise];
</pre>
<pre> //取出數(shù)據(jù) NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSString *userName = [ userDefault objectForKey:@"userNameString"];
</pre>
不同類型數(shù)據(jù)存儲(chǔ)方式
不同類型數(shù)據(jù)存儲(chǔ)方式 | code |
---|---|
對(duì)象 | - setObject: forKey: |
布爾值 | - setBool: forKey: |
浮點(diǎn)值 | - setFloat: forKey: |
整數(shù)值 | - setInteger: forKey: |
雙精度 | - setDouble: forKey: |
URL值 | - setURL: forKey: |
注意:
- NSUserDefaults中要保證每個(gè)Key的唯一性六敬,如果對(duì)相同的key重復(fù)賦值,會(huì)覆蓋舊值驾荣。
- NSUserDefaults 存儲(chǔ)的對(duì)象是不可變的(例如NSMutableArray外构、NSMutableDictionary等是不可以存儲(chǔ)的)。
- 調(diào)用[[NSUserDefaults standardUserDefaults] synchronize]是立即更新存儲(chǔ)播掷,避免數(shù)據(jù)丟失审编,這個(gè)方法會(huì)在系統(tǒng)中默認(rèn)調(diào)用。
下面給出幾種常用的應(yīng)用場(chǎng)景:
- 以字符串形式存儲(chǔ)當(dāng)前時(shí)間
NSDate *currentDate = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss SS"]; NSString *dateString = [dateFormatter stringFromDate:currentDate]; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:dateString forKey:@"currentTime"];
- 存儲(chǔ)整數(shù)
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setInteger:100 forKey:@"Integer"];
- 存儲(chǔ)圖片
UIImage *image =[UIImage imageNamed:@"example"]; NSData *imageData = UIImageJPEGRepresentation(image, 100); NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:imageData forKey:@"image"];