第一種方式User Defaults牵署。
實現(xiàn)的功能:1)演示NSUserDefaults持久化數(shù)據(jù)乡翅。
關(guān)鍵詞:數(shù)據(jù)持久化 NSUserDefaults
1站宗、新建一個Sigle View Application,命名為Persistence_NSUserDefaults霎奢,工程結(jié)構(gòu)如下:
2偏瓤、修改ViewController.xib,添加兩個Label控件和兩個TextField控件椰憋,如下:
3厅克、修改ViewController.h,如下:
[cpp]view plaincopy
#import?
@interface?ViewController?:?UIViewController
@property(retain,nonatomic)IBOutlet?UITextField?*server;
@property(retain,nonatomic)IBOutlet?UITextField?*port;
@end
連接輸出口server橙依、port证舟,如下:
4、修改ViewController.m窗骑,如下:
[cpp]view plaincopy
#import?"ViewController.h"
@interface?ViewController?()
@end
@implementation?ViewController
@synthesize?server;
@synthesize?port;
-?(void)viewDidLoad
{
[super?viewDidLoad];
//?Do?any?additional?setup?after?loading?the?view,?typically?from?a?nib.
NSLog(@"viewDidLoad");
//初始化數(shù)據(jù)
[self?initData];
//訂閱通知UIApplicationDidEnterBackgroundNotification女责,進行數(shù)據(jù)保存操作
UIApplication?*app?=?[UIApplication?sharedApplication];
[[NSNotificationCenter?defaultCenter]addObserver:self?selector:@selector(applicationWillDidEnterBackground:)?name:UIApplicationDidEnterBackgroundNotification?object:app];
}
//初始化數(shù)據(jù)
-(void)initData{
NSUserDefaults?*defaults?=?[NSUserDefaults?standardUserDefaults];
server.text?=??[defaults?objectForKey:@"server"];
port.text?=?[defaults?objectForKey:@"port"];
}
-(void)applicationWillDidEnterBackground:(NSNotification?*)notification{
NSLog(@"#applicationWillEnterForeground");
[self?saveData];
}
//保存數(shù)據(jù)
-(void)saveData{
NSUserDefaults?*defaults?=?[NSUserDefaults?standardUserDefaults];
[defaults?setObject:server.text?forKey:@"server"];
[defaults?setObject:port.text?forKey:@"port"];
[defaults?synchronize];//強制User?Defaults系統(tǒng)進行保存
}
-?(void)viewDidUnload
{
[super?viewDidUnload];
//?Release?any?retained?subviews?of?the?main?view.
server?=?nil;
port?=?nil;
}
-?(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return(interfaceOrientation?!=?UIInterfaceOrientationPortraitUpsideDown);
}
@end
5、編譯创译、運行抵知,在TextField中輸入如下內(nèi)容:
退出Simulator,然后重新運行程序软族,上次輸入的內(nèi)容已顯示在TextField中刷喜。
6、數(shù)據(jù)到底保存到哪兒了立砸?掖疮??
iPhone應(yīng)用程序沙盒颗祝,或許你聽過這個東東浊闪,沒聽過也沒關(guān)系,下面就說說它螺戳。
1)iPhone應(yīng)用程序只能在為該改程序創(chuàng)建的文件系統(tǒng)中讀取文件搁宾,不可以去其它地方訪問,此區(qū)域被成為沙盒倔幼。
2)? 沙盒在哪兒呢盖腿?先來看一下iPhone應(yīng)用程序安裝后的存放位置,我mac上的地址如下:
/Users/duobianxing/Library/Application Support/iPhone Simulator/5.0
我的模擬器是5.0的凤藏,截圖如下:
打開Applications目錄奸忽,截圖如下:
上圖中每個目錄都是一個應(yīng)用程序的沙盒,最上面的那個目錄就是剛剛演示的工程Persistence_NSUserDefaults安裝后的目錄揖庄,打開該目錄栗菜,截圖如下:
也可以打開Applications下的其它目錄驗證一下,每個iPhone應(yīng)用程序自己的沙盒下有3個目錄蹄梢,分別是:
1)Documents:應(yīng)用程序數(shù)據(jù)保存到該目錄下疙筹,但是基于NSUserDefaults的數(shù)據(jù)不會保存到該目錄下(所以富俄,剛才演示的工程Persistence_NSUserDefaults的數(shù)據(jù)沒有保存到該目錄下)
2)Library:基于NSUserDefaults的數(shù)據(jù)會保存到該目錄,工程Persistence_NSUserDefaults的數(shù)據(jù)一定保存到該目錄下啦而咆,趕緊找一下吧霍比,
子目錄Preferences下的com.zyg.ios.Persistence-NSUserDefaults.plist文件保存了server、port數(shù)據(jù)暴备,打開看一下悠瞬,截圖如下:
可以發(fā)現(xiàn),使用NSUserDefaults時涯捻,數(shù)據(jù)默認保存在沙盒的Library目錄下的文件:工程名稱.plist中浅妆。
3)tmp:存儲臨時文件。每個應(yīng)用程序應(yīng)該負責(zé)刪除自己tmp目錄下的臨時數(shù)據(jù)障癌。
7凌外、總結(jié):
NSUserDefaults一般用于保存首選項信息、緩存數(shù)據(jù)等少量數(shù)據(jù)涛浙。
本文工程Persistence_NSUserDefaults純粹為了演示康辑,實際開發(fā)中不一定這樣應(yīng)用。