此份筆記是根據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>
}
如此一來就可以解決錯誤的訊息。
【執行結果】
【專案範例】
沒有留言:
張貼留言