HW12— 用 prepare 傳遞資料

SWIFT

這次的Homework因為不想自己產生fake data, 因此使用了Yelp提供的免費API來撈取特定地點餐廳, 並載顯示於列表中。

API使用了Alamofire提供的實作進行網路請求呼叫, 於response取得結果JSON字串。由於Swift4已經有如同GSON一樣將JSON字串deserialize回物件型態的方式了, 因此於API response時直接轉成自訂物件集合並重新刷新列表顯示資料。

非同步圖像載入UIImageView是用Kingfisher. 使用SearchController附加於NavigationBar上來當關鍵字搜尋。

在點擊TableView的item後, 於實作selection callback的地方執行performSegue並在prepare將餐廳資訊物件傳給下一頁顯示用.

[遇到的困難]

1. 遇到了AlertControl要在view顯示後才能開始present, 否則會無法dismiss掉.

2.字串陣列可以用join合併成一個字串來顯示餐廳類型, 因為原本API是以陣列方式提供, 但UI想顯示成單行.

3.API查詢時,帶入參數有中文字串要進行UrlEncoding

目前API查詢的地點是寫死的所以資料是固定的,地圖的Thumbnail也是先用預設圖不是動態擷取Street Image. 後續會再進行調整讓這個App能更穩定且更多的功能. 還有程式碼也需要調整Orz….

操作流程