IOS開發(fā)—Plist文件如何加載復(fù)雜數(shù)據(jù)

ios開發(fā)初學(xué)者經(jīng)常使用plist文件來模擬互聯(lián)網(wǎng)數(shù)據(jù)巢掺,它的好處在于能幫我們存儲我們編程中需要的素材數(shù)據(jù),需要使用時調(diào)用極其方便劲蜻,

是ios開發(fā)和學(xué)習(xí)中常用的文件之一陆淀。下面我們來深入學(xué)習(xí)下plist文件在加載復(fù)雜結(jié)構(gòu)的數(shù)據(jù)時如何進行讀取,還有我們自己怎么整理數(shù)據(jù)結(jié)構(gòu)復(fù)雜的plsit文件先嬉。

先了解下plist文件的定義和基本用法:plist文件的全名是:Property List轧苫,它是一種用來存儲串行化后的對象的文件。文件的擴展名是.plist疫蔓,通常就稱為plist文件含懊。文件是xml格式,在ios開發(fā)工具xcode中我們能看到plist文件的xml格式和.plist格式衅胀。我們現(xiàn)在先創(chuàng)建一個plsit文件绢要,在xcode中點擊commode鍵和N鍵,彈出創(chuàng)建文件選項框中選中Property List拗小,點擊next后就會跳轉(zhuǎn)到設(shè)置plist文件文件名的界面重罪。如下圖所示:


在輸入框中設(shè)定plist文件的名字,回車后就成功創(chuàng)建了一個plist文件哀九。

創(chuàng)建plist文件后根數(shù)據(jù)的格式只能是NSArray和Dictionary格式剿配。我們將Root左邊的三角形點擊朝下后再點擊加號就能創(chuàng)建子數(shù)據(jù)。

我們將Root左邊的三角形點擊朝下后再點擊加號就能創(chuàng)建子數(shù)據(jù)阅束。

如果你選擇的數(shù)據(jù)類型是字典類型呼胚,左邊的Key就代表字典的key值,右邊的Value就代表字典的Value值息裸。中間的Type就代表數(shù)據(jù)類型蝇更。我們在子數(shù)據(jù)中再點擊中間的String,就能看到plist文件能保存的數(shù)據(jù)類型了沪编。

所以plist文件能保存的數(shù)據(jù)類型就是這些,有Dictionary年扩、Array蚁廓、Boolean、Data厨幻、Date相嵌、Number、String幾種類型况脆,所以plist文件在開發(fā)中主要用于保存編程需要的素材數(shù)據(jù)饭宾,在程序?qū)嶋H運行中主要用于保存用戶偏好設(shè)置。不能用于保存View等Object文件格了。

選擇好數(shù)據(jù)類型后我們就可以在文件中書寫數(shù)據(jù)看铆。這里可以保存圖片名稱,我們調(diào)用數(shù)據(jù)時可根據(jù)圖片名稱加載圖片盛末。這點在下面數(shù)據(jù)加載中會說明弹惦。


上面說明的是plist文件的創(chuàng)建和plist文件的基本格式。下面我們來看如何加載數(shù)據(jù)結(jié)構(gòu)復(fù)雜的plist文件

第一種類型是常用的pickView中省市的選擇满败。我們建議看plist文檔時先看數(shù)據(jù)的類型肤频。然后根據(jù)數(shù)據(jù)的類型創(chuàng)建對應(yīng)的變量來接收。例如懶加載中根數(shù)據(jù)類型是Array,接下來是Dictionary類型算墨。字典里面保存了三個數(shù)組宵荒,數(shù)組中分別保存著各自的String數(shù)據(jù)。


加載上面數(shù)據(jù)的方法如下:


NSURL*url = [[NSBundlemainBundle]URLForResource:plistNamewithExtension:nil];

第一層數(shù)據(jù)净嘀,數(shù)據(jù)類型為數(shù)組

NSArray*dataArray= [NSArrayarrayWithContentsOfURL:url];

//獲取第二層的數(shù)據(jù)报咳,數(shù)據(jù)類型為字典

NSDictionary*dic =dataArray[section];

//獲取第三層數(shù)據(jù),數(shù)據(jù)類型數(shù)組

NSArray*items = dic[@"items"];

//獲取第四層數(shù)據(jù)挖藏,數(shù)據(jù)類型字符串

NSString*str= items [1];

```


第二種是社交app中常用的用戶的偏好設(shè)置暑刃,包括組名,組的人數(shù)膜眠,好友的頭像岩臣,好友的昵稱,好友的個性簽名宵膨。這里重點說明這種結(jié)構(gòu)的數(shù)據(jù)如何書寫架谎,和如何加載。


同樣分析上面數(shù)據(jù)辟躏,第一層數(shù)據(jù)為數(shù)組谷扣,第二層數(shù)據(jù)為字典,第三層數(shù)據(jù)為數(shù)組捎琐,第四層數(shù)據(jù)Wie字典会涎,第五層數(shù)據(jù)為字符串裹匙。獲取數(shù)據(jù)方法如下


```

NSURL*url = [[NSBundlemainBundle]URLForResource:plistNamewithExtension:nil];

NSArray*dataArray= [NSArrayarrayWithContentsOfURL:url];

//獲取第二層的數(shù)據(jù),數(shù)據(jù)類型為字典

NSDictionary*dic =dataArray[section];

//獲取第三層數(shù)據(jù)末秃,數(shù)據(jù)類型數(shù)組

NSArray*items = dic[@"friends"];

//獲取第四層數(shù)據(jù)概页,數(shù)據(jù)類型字符串

NSDictionary*dic2= items

[row];

//獲取第四層數(shù)據(jù),數(shù)據(jù)類型字符串

NSString*str= dic2[@"icon”];


最后一種我和TableView結(jié)合起來蛔溃,分析plsit文件和單元格之間的關(guān)系绰沥。同樣篱蝇,加載數(shù)據(jù)如下贺待。



NSURL*url = [[NSBundlemainBundle]URLForResource:plistNamewithExtension:nil];

第一層數(shù)據(jù),數(shù)據(jù)類型為數(shù)組

NSArray*dataArray= [NSArrayarrayWithContentsOfURL:url];

//獲取第二層的數(shù)據(jù)零截,數(shù)據(jù)類型為字典

NSDictionary*dic =dataArray[section];

//獲取第三層數(shù)據(jù)麸塞,數(shù)據(jù)類型數(shù)組

NSArray*items = dic[@"items"];

//獲取第四層數(shù)據(jù),數(shù)據(jù)類型字符串

NSDictionary*dic2= items

[row];

//獲取第四層數(shù)據(jù)涧衙,數(shù)據(jù)類型字符串

NSString*icon= dic2[@"icon"];


上面是介紹的是plist文件的數(shù)據(jù)加載方式哪工,如果你有時間,可以嘗試手寫一個plist文件弧哎,并將數(shù)據(jù)加載到tableView中雁比。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市撤嫩,隨后出現(xiàn)的幾起案子偎捎,更是在濱河造成了極大的恐慌,老刑警劉巖序攘,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茴她,死亡現(xiàn)場離奇詭異,居然都是意外死亡程奠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铃肯,“玉大人疤孕,你說我怎么就攤上這事【嗑常” “怎么了申尼?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肮疗。 經(jīng)常有香客問我晶姊,道長,這世上最難降的妖魔是什么伪货? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任们衙,我火速辦了婚禮钾怔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒙挑。我一直安慰自己宗侦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布忆蚀。 她就那樣靜靜地躺著矾利,像睡著了一般。 火紅的嫁衣襯著肌膚如雪馋袜。 梳的紋絲不亂的頭發(fā)上男旗,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音欣鳖,去河邊找鬼察皇。 笑死,一個胖子當(dāng)著我的面吹牛泽台,可吹牛的內(nèi)容都是我干的什荣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怀酷,長吁一口氣:“原來是場噩夢啊……” “哼稻爬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜕依,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桅锄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笔横,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竞滓,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年吹缔,在試婚紗的時候發(fā)現(xiàn)自己被綠了商佑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡厢塘,死狀恐怖茶没,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晚碾,我是刑警寧澤抓半,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站格嘁,受9級特大地震影響笛求,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一探入、第九天 我趴在偏房一處隱蔽的房頂上張望狡孔。 院中可真熱鬧,春花似錦蜂嗽、人聲如沸苗膝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辱揭。三九已至,卻和暖如春病附,著一層夾襖步出監(jiān)牢的瞬間问窃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工胖喳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泡躯,地道東北人贮竟。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓丽焊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咕别。 傳聞我的和親對象是個殘疾皇子技健,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容