欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

【一步一步學(xué)IOS5 】 應(yīng)用Property List 強(qiáng)化你

系統(tǒng) 2649 0

前面我們已經(jīng)創(chuàng)建了一個(gè)簡單的表視圖應(yīng)用程序,顯示菜譜列表。分析一下代碼,你會(huì)發(fā)現(xiàn)所有的菜譜都應(yīng)編碼在源代碼中。之前,我們只考慮讓事情變得簡單,并著重演示如何創(chuàng)建一個(gè) UITableView 應(yīng)用程序。然而,將所有元素比硬編碼在

代碼中并不是推薦的方法。

?

在真實(shí)的App開發(fā)中,我們常常將這些靜態(tài)元素存放在外部(如菜譜列表)文件或數(shù)據(jù)庫或其它地方。在IOS編程中,有一種類型的文件,成為 Property List. 這一類型的文件通常在Mac OS 和 iOS中發(fā)現(xiàn),用來存放簡單的結(jié)構(gòu)數(shù)據(jù)(如應(yīng)用程序設(shè)置)。

?

下面,我們來更新之前的Simple Table 應(yīng)用程序,使用 Property ?List.

?

我們將討論如下一些主題:

1)轉(zhuǎn)化靜態(tài)數(shù)組中的表數(shù)據(jù)為 Property List

?

2)如何讀取 Property List

?

1.為什么外部化表數(shù)據(jù)?

?

將靜態(tài)數(shù)據(jù)從代碼分離出來是一個(gè)很好的做法。為什么呢? 將表數(shù)據(jù)置于外部數(shù)據(jù)源的優(yōu)點(diǎn)是什么呢?

?

假如讓你添加50多個(gè)菜譜到Simple Table 應(yīng)用程序中,你需要返回源代碼,將新的菜譜添加到初始化代碼中。

?

這種做法并沒有任何問題,但是,編寫這些代碼并不簡單,必須要嚴(yán)格遵循Object-C語法。更改代碼可能會(huì)引起其他錯(cuò)誤,這并不是我們期望的。

?

顯然,最好是將數(shù)據(jù)和代碼邏輯分離,像下面這一將表數(shù)據(jù)存放起來不是更好嗎?

?


【一步一步學(xué)IOS5 】 應(yīng)用Property List 強(qiáng)化你的Simple Table 應(yīng)用程序

實(shí)際上,可能并不是你提供表數(shù)據(jù)(本例子是菜譜列表數(shù)據(jù)),而是其他不懂iOS編程經(jīng)驗(yàn)的人提供這些數(shù)據(jù)。當(dāng)我們將數(shù)據(jù)放置在外部文件,這樣容易讀寫,且更容易理解。

?

隨著更深入學(xué)習(xí),我們將了解如何將數(shù)據(jù)存放在Server端(或者所謂的云)

?

App中所有數(shù)據(jù)將根據(jù)需要從Server端讀取。目前,這一提供了很大的好處,因?yàn)閷?shù)據(jù)的任何更新都需要你重構(gòu)App,并提交給App審批。通過將數(shù)據(jù)分離存放在云(Cloud)中,你可以隨時(shí)更新數(shù)據(jù),而不是更新你的App。

?

現(xiàn)在,我們來看看如何使用Property List.

?

2. Property List 是什么?

?

Property List 提供了一個(gè)方便的方法來存放簡單的結(jié)構(gòu)數(shù)據(jù),通常為XML格式。

?

你不能使用Property List存放所有類型的數(shù)據(jù),Property List中存放的數(shù)據(jù)類型是有限的,包括數(shù)組(Array)、字典(Dictionary)、字符串(String)等等。 關(guān)于支持類型的更詳細(xì)信息,可參考Property List文檔。

?

3.這是存放表數(shù)據(jù)的最好方式嗎?

?

不是,絕對不是,我們使用Property List 來演示如何在外部文件存放表數(shù)據(jù),這僅僅是一個(gè)例子。

?

4.轉(zhuǎn)換表數(shù)據(jù)為Property List

?

首先,右擊SimpleTable 文件夾,選擇New File..., 接著選擇iOS模板下面的Resource,最后選擇Property List, 并點(diǎn)擊next繼續(xù)。

?

在彈出窗口中,使用recipes 作為文件名。確認(rèn)之后,Xcode將自動(dòng)創(chuàng)建Property List文件。

?

我們需要在PropertyList 中添加3個(gè)數(shù)組數(shù)據(jù),我們在Property List中添加3行,類型為Array。分別命名Key值為:

RecipeName,Thumbnail和PrepTime.

?

Key值作為識別碼,在后面的代碼中用來獲取相應(yīng)的數(shù)組。

?


【一步一步學(xué)IOS5 】 應(yīng)用Property List 強(qiáng)化你的Simple Table 應(yīng)用程序

點(diǎn)擊展開圖標(biāo),并點(diǎn)擊 + 圖標(biāo),添加新的 item ,實(shí)現(xiàn)數(shù)組中添加數(shù)據(jù)。完成后的Property List 如下圖所示:

?


【一步一步學(xué)IOS5 】 應(yīng)用Property List 強(qiáng)化你的Simple Table 應(yīng)用程序

附件提供recipes.plist 文件下載

?

5.在Object-C中加載Property List

?

接著,我們更新代碼,從上一步創(chuàng)建的Property List文件中加載菜譜列表,從Property List中讀取內(nèi)容相當(dāng)簡單。 iOS SDK已經(jīng)有內(nèi)置的方法來處理該文件的讀取操作。

?

替換代碼如下:

?

?

? ?? //Find out the path of recipes.plist

? ? NSString *path = [[ NSBundle mainBundle ] pathForResource : @"recipes" ofType : @"plist" ];

?

? ? //Load the file content and read the data into arrays

?

? ? NSDictionary *dict = [[ NSDictionary alloc ] initWithContentsOfFile :path];

? ? tableData = [dict objectForKey : @"RecipeName" ];

? ? thumbnails = [dict objectForKey : @"Thumbnail" ];

? ? time = [dict objectForKey : @"PrepTime" ];

? ? //Initialize prepTime

? ? prepTime = @"PrepTime:" ;


6.代碼修改的解釋

第2行代碼 - 讀取recipes.plist 文件之前,你需要先獲得資源文件的全路徑。

第4行代碼 - 在Property List中定義了3個(gè)Keys,分別是:RecipeName,Thumbnail和time。在這個(gè)例子中,每一個(gè)Key和一個(gè)特定的數(shù)據(jù)關(guān)聯(lián),提供數(shù)組值。在iOS編程中,我們使用dictionary 術(shù)語指向key-value對組合。

NSDictionary 類提供了必要的的方法來關(guān)聯(lián)dictionary. 這里,我們使用NSDictionary 類的 initWithContentsOfFile 方法來讀取Property List 文件中的key-value 組合。

第5-7行代碼 - 這些代碼根據(jù)之前定義的key,負(fù)責(zé)分別檢索相應(yīng)的數(shù)組。

完成上述代碼更新之后,再次運(yùn)行App.App 運(yùn)行界面和之前的一樣,但是,菜譜列表是從Property List 中加載的。

?

?

【一步一步學(xué)IOS5 】 應(yīng)用Property List 強(qiáng)化你的Simple Table 應(yīng)用程序


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产一区 | 亚洲午夜在线 | 亚洲区在线| 麻豆av在线播放 | 高清中文字幕视频在线播 | 久操伊人 | 亚州综合 | 亚洲蜜桃AV色情精品成人 | 婷婷久久无码欧美人妻 | 欧美日韩综合一区 | 草莓视频午夜在线观影 | 亚洲国产日韩在线一区 | 久久亚洲精品中文字幕 | 久久久亚洲伊人色综合网站 | av在线一区二区三区 | 欧美 亚洲 另类 热图 | 亚洲一区二区三区福利在线 | 婷婷色香五月激情综合2020 | 亚洲成人第一页 | 精品精品国产高清a毛片 | 91久久亚洲国产成人精品性色 | 天天干夜夜笙歌 | 日韩版码免费福利视频 | 99久久99| 6全高清智能录播系统视频 精品九九 | 超碰成人免费 | 午夜草逼 | 日韩久久精品 | 三级成人在线 | 国产成人午夜性a一级毛片 久久久久亚洲 | 插入综合网 | 亚洲第一男人天堂 | 婷婷久月| 亚洲高清免费观看 | 亚洲成人免费视频在线观看 | 12306午夜被窝播播影院yw188 | 成 人 黄 色 大片 | 欧美久草 | 国产在线视频一区二区 | 亚洲第一成人影院 | 亚洲午夜精品一区二区三区他趣 |