本章目標(biāo):? plist 文件的讀寫操作
在xcode中創(chuàng)建一個項目 會在supportion files 目錄下 看見一個已plist后綴類型的文件,這個文件 是以 key value 存放的鍵 值對的值。它全名是:Property List,屬性列表文件绒窑,它是一種用來存儲串行化后的對象的文件。屬性列表文件的擴展名為.plist?,因此通常被稱為?plist文件某饰。plist文件是標(biāo)準(zhǔn)的xml格式的。? 我們在日常開發(fā)中 可以用它 來存儲 一些系統(tǒng)的 的用戶信息,系統(tǒng)的配置信息等黔漂。
本章 我們來看看plist 文件是 如何讀寫的
在具體操作之前我們來先了解下幾個專業(yè)的名詞 :
NsBundler 主束 束是一個特定的文件夾類型诫尽,其中的內(nèi)容遵循特定的結(jié)構(gòu),應(yīng)用程序喝框架都是束炬守, NsBundler 一個主要的作用是獲取添加到項目的Resoureces文件加的資源牧嫉。
NSDictionary 字典 就是key-value對的集合。key是字符串(NSString)减途,value是對象指針酣藻。
啟動Xcode 創(chuàng)建一個名為”HelloWord“新項目:界面模板選擇為 single view appliction ,不會創(chuàng)建的同學(xué) 去看上一章喔? 項目信息填寫如下圖。填寫完成后 選擇項目保存位置
在Supporting Files 目錄下 創(chuàng)建一個新文件? 一個新的Plist 文件
Supporting files -> new file? -> ios -> Resourece -> Property List?
如圖 :
創(chuàng)建后命名為 citys 并保存? 改文件會出現(xiàn)在 Supporting Files 目錄下面
打開他 并添加 值 如圖 :
?該文件 在后面的 源碼中有 鳍置, 各位童鞋 可以去下載 節(jié)省下載時間
在本章里面 我們 沒用到界面 所有數(shù)據(jù) 在 日志中查看
下面看代碼
?? //創(chuàng)建主束 ?
??? NSBundle *bundle=[NSBundle mainBundle];
//讀取plist文件路徑
NSString *path=[bundle pathForResource:@"citys" ofType:@"plist"];
//讀取數(shù)據(jù)到 NsDictionary字典中?
NSDictionary *dictionary=[[NSDictionary alloc]initWithContentsOfFile:path];
NSLog(@"size is %d",[dictionary count]);?
//NSLog(@"data is %@",dictionary);?
NSArray *array=[dictionary allKeys];
// 循環(huán)輸出字典中的? data 數(shù)據(jù)?
for(id key in dictionary)
{
NSArray *arrays=[dictionary objectForKey:key];
for(int i=0;i<[arrays count];i++){
NSLog(@"key: %d,value: %@",i,[arrays objectAtIndex:i]);
}
}
把上面的代碼添加到 委托器中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中
保存運行 臊恋,各位童鞋 就可以看到 log 控制臺中看到 輸出的數(shù)據(jù)了。 如下
iphone_Sample_PlistReadAndWrite[864:f803] key: 0,value: 廣州
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 1,value: 深圳
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 2,value: 肇慶
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 3,value: 佛山
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 4,value: 東莞
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWri墓捻。抖仅。。砖第。撤卢。。梧兼。 省略
有一句話叫做三人行必有我?guī)煼欧裕鋵嵶鰹橐粋€開發(fā)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要這是一個我的iOS交流群681503716羽杰,請備注編號《晨》渡紫,大牛歡迎入駐,正在求職的也可以加入考赛,大家一起交流學(xué)習(xí)惕澎,話糙理不糙,互相學(xué)習(xí)颜骤,共同進步唧喉,一起加油吧。)
在我們平時的手機開發(fā)中需要保存一些用戶數(shù)據(jù)忍抽,操作數(shù)據(jù)八孝。 plist 可以算是其中的一種方法了,下面我們來看看 plist 文件的寫操作鸠项。
程序繼續(xù)沿用上面的程序
在 ios中要寫入數(shù)據(jù) 干跛,那我們的數(shù)據(jù) 保存在哪兒呢, 是沙盒祟绊, 每個程序的數(shù)據(jù)只能保存在沙盒中楼入, 同樣我們的數(shù)據(jù) 也是保存在沙盒中哥捕。 少廢話了 ,直接看代碼
//plist write
//創(chuàng)建一個可變長度的NSMutableDictionary 對象 該對象專門用于存儲數(shù)據(jù)的
NSMutableDictionary *data=[[NSMutableDictionary alloc]init];
//添加數(shù)據(jù)
[data setObject:@"one" forKey:@"1"];
[data setObject:@"two" forKey:@"2"];
[data setObject:@"three" forKey:@"3"];
[data setObject:@"four" forKey:@"4"];
//要往沙盒中寫數(shù)據(jù)當(dāng)然要先取的沙盒目錄啦
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPaht=[paths objectAtIndex:0];
//取得完整的文件名
NSString *fileName=[plistPaht stringByAppendingPathComponent:@"textdeom.plist"];
NSLog(@"fileName is%@",fileName);
//創(chuàng)建并寫入文件
[data writeToFile:fileName atomically:YES];
//檢查是否寫入
NSMutableDictionary *writeData=[[NSMutableDictionary alloc]initWithContentsOfFile:fileName];
NSLog(@"write data is :%@",writeData);
上面我們創(chuàng)建了一個NSMutableDictionary 可變長度的字典浅辙,并添加元素扭弧,然后在寫入沙盒中阎姥,最后并重新讀取出來记舆,? 這一章涉及了 沙盒的 內(nèi)容,大家 先了解這里呼巴,后面我們會再講沙盒的
上面的代碼添加到 委托器中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
保存運行程序 效果如下 :
?運行程序會輸出 沙盒的地址 泽腮,和我們程序給 給 plist 寫入的 值
好了 這一章就到這里, 歡迎 各位童鞋 拍磚 衣赶。