一郑原、了解NSUserDefaults以及它可以直接存儲的類型
NSUserDefauts是iOS系統(tǒng)給我提供的一個單例類贱枣,它適合儲存輕量級的本地數(shù)據(jù)监署。例如用戶名和密碼,app的主題顏色纽哥,通知設(shè)置钠乏,用戶頭像等。通過類方法standarUserDefauts可以獲取NSUserDefauts實(shí)例春塌。如:
NSUserDefauts *defauts=[NSUserDefauts standarUserDefauts];
NSUserDefauts實(shí)例是以key-value的形式來存取數(shù)據(jù)晓避,key是名稱,value是相應(yīng)的數(shù)據(jù)只壳∏喂埃可以使用方法objectForKey:和setObject:forKey:取/存數(shù)據(jù)。
NSUserDefauts支持的數(shù)據(jù)類型:NSNumber(NSInteger吼句、float锅必、double),NSString惕艳,NSDate搞隐,NSArray,NSDictionary远搪,BOOL劣纲。
注意:NSUserDefaults 存儲的對象全是不可變的(這一點(diǎn)非常關(guān)鍵,弄錯的話程序會出bug)谁鳍,例如癞季,如果我想要存儲一個NSMutableArray 對象,我必須先創(chuàng)建一個不可變數(shù)組(NSArray)再將它存入NSUserDefaults中去倘潜,代碼如下:
NSMutableArray?*mutableArray?=?[NSMutableArray?arrayWithObjects:@"123",@"234",?nil?nil];??
NSArray?*?array?=?[NSArray?arrayWithArray:mutableArray]; ?
NSUserDefaults?*user?=?[NSUserDefaults?standardUserDefaults];??
[user?setObject:array?forKey:@"記住存放的一定是不可變的"];??
取出數(shù)據(jù)是一樣的绷柒,想要用NSUserDefaults中的數(shù)據(jù)給可變數(shù)組賦值
二、使用 NSUserDefaults 存儲自定義對象
注意:NSUserDefauts不能直接儲存自定義數(shù)據(jù)模型涮因,如果要存儲自定義對象废睦,必須的把自定義對象轉(zhuǎn)換為NSData類型
如:使用歸檔將要存儲的對象轉(zhuǎn)換成NSData再儲存到NSUserDefauts。
存:
PersonInfo *personinfo=[[PersonInfo alloc]init];
personinfo.username=@"ww";
NSData *data=[NSKeyedArchiver?archivedDataWithRootObject:personinfo];??
NSUserDefauts *defauts=[NSUserDefauts standarUserDefauts];
[defauts?setObject:data?forKey:@"personinfo"];??
热锿恕:
NSUserDefauts *defauts=[NSUserDefauts standarUserDefauts];
?NSdData?*data?=?[defauts?objectForKey:@"personinfo"];
PersonInfo *personinfo=?[NSKeyedUnarchiver?unarchiveObjectWithData:data];?