2014年7月2日 星期三

UITableView programmatically using Swift language(Property List)

【說明】

此份筆記是根據ISBN:978-986-201-900-9這本書的第7章節所紀錄的。

此篇的資料改為以Property List來儲存,Property List是一種提供儲存結構化資料的方式。

建立一個Property List的檔案,如下圖所示。

新增Property List檔案
將先前在CustomTableViewController內建立的資料轉換成Property List,如下圖所示。

將資料轉換為Property List

【片段程式碼】

var recipesNames: String[] = []
var recipesImages: String[] = []
var recipePrepTimes: String[] = []
將三個變數設為空值,並設為全域變數。

let path = NSBundle.mainBundle().pathForResource("recipes", ofType: "plist")
設一個名為path的變數,儲存Property List存放的位置。

let dict = NSDictionary(contentsOfFile: path)
設一個名為dict的變數,將Property List以NSDictionary的方式存在dict裡面。

recipesNames = dict.objectForKey("Name") as Array<String>
recipesImages = dict.objectForKey("Image") as Array<String>
recipePrepTimes = dict.objectForKey("PrepTime") as Array<String>
將Dictionary內的key給變數做存放。

若單獨以這幾行程式碼放在CustomTableViewController的class內會出現ViewController沒有path這個成員的錯誤訊息,所以解決方法就是將程式塞進awakeFromNib()的函式裡。

override func awakeFromNib() {
    super.awakeFromNib()
        
    let path = NSBundle.mainBundle().pathForResource("recipes", ofType: "plist")
    let dict = NSDictionary(contentsOfFile: path)
    recipesNames = dict.objectForKey("Name") as Array<String>
    recipesImages = dict.objectForKey("Image") as Array<String>
    recipePrepTimes = dict.objectForKey("PrepTime") as Array<String>
}
如此一來就可以解決錯誤的訊息。

【執行結果】


【專案範例】

沒有留言:

張貼留言