Swift:MVC 實現 Firebase & TableView

Sunny, Lee
Jul 10, 2017 · 6 min read

What doesn’t kill you, makes you stronger. — — Friedrich Wilhelm Nietzsche

這句話看起來是老梗話,卻是許多人心中的那句話,這樣說起來有點玄妙,記得國中(還是高中?)時,不知道打哪看到「說出來會被嘲笑的夢想,才有實踐的價值。」那一瞬間我領悟了什麼。

從小到大,我一直知道有些事情,我這輩子非做不可,小至刺青、潛水、打架(自以為叛逆的小 P 孩),大一點的夢想則是「創業」,當時大多人都不理解這是什麼樣的想法,長輩聽到也是嘴角上揚的戲謔,但就是有這麼一個 想法,靜悄悄又堅決地在心中萌芽,我也不時的告訴自己 What doesn’t kill you, makes you stronger. 就像跑步一樣,最後一圈總是最幹的,但這代表你正在突破當中,撐過去就是你的了!


Demo

P.S. If you can’t read Chinese, you can simply go to the bottom of the article and download project from Github.

一、前言

我們在開發當中,難免會碰到 Tableview,而 Tableview 又分成很多種,以白話文的方式來說,如下圖分成:簡單(Simple)、一點點複雜(A Little Complicated)、非常複雜(Very Complicated)。大多時候,我們在實作過程中,碰到都是「非常複雜(Very Complicated) Tableview」(下圖最右邊的圖),那這麼複雜的Custom Tableview,怎麼跟Firebase一起使用呢?

今天要教大家的是在一個範例專案中,結合Firebase,駕馭複雜的 Custom Tableview!

在這裡會實際教大家完成一個「我是小廚師」App,這個練習將學到:

下方:左圖為 Firebase 端的 Database,右圖為 App 端的 Tableview。可以看到右圖中 Tableview 裡面的所有 Object 都包含在左圖中的橘色框框裡,這就是我們在處理 List 的方式,再用 .childAdded 來放置到 Tableview 中。

二、用寶寶步伐走過Firebase與App的連接

請參考下面這篇文章,非常詳細的帶你走過Firebase與App的Connection。


三、開啟用Email登入


四、Coding Time

・在開始Coding之前,要使用Camera或Photo要先至Info.plist,添加下面兩個項目:

Camera:

Key       :  Privacy - Camera Usage Description   
Value : $(PRODUCT_NAME) camera use

Photo:

Key       :  Privacy - Photo Library Usage Description    
Value : $(PRODUCT_NAME) photo use

這個專案總共有四個ViewController:Initial、SignUp、Main、Dishes。

1. 上傳資料:SignUpViewController & DishesViewController

如上圖有五項目:FoodName、cookTime、cookName、cookhow、cookPic,我們在「建立資料」時就要把他們以 uniqueString(隨機亂數)為key 下面,之後在「獲取資料」時,我們會看到一個稱為 .childAdded,設計來處理 list ,這裡的 list 就是指上述五項,此外,在許多聊天室的練習中(如:Firebase Tutorial: Real-time Chat)也會使用到 .childAdded 的應用。


2. 取得資料:Tableview三合一(MainTableViewController、Meals、DishesTableViewCell)。

a. 原本的ViewController(MainTableViewController)。

b. 創造一個Swift檔(Meals),裝載NSObject,這裡的名稱都要跟Firebase裡面的Child名稱一模一樣。

c. 處理TableviewCell的DishesTableViewCell。

以上擷取幾段關鍵的程式碼,歡迎到 Github連結 下載完整 Project


五、結語

Firebase 與 Custom Tableview 的教學到這邊告一段落,之所以會特別寫一篇文章,是因為我在實作的過程中,一直沒找到歸納的範本,零零散散的困獸了好久,希望能帶給你幫助,更快速掌握要領!


我是鬥志創業家兼 iOS菜鳥工程師 Sunny,想了解更多請到我的網站
若有任何問題或建議,歡迎留言,或寄信至 sunnylee945@hotmail.com。

# 隨手給愛心❤ # FollowGithub

Sunny, Lee

Written by

#iOS Developer #Swift Lover #Firebase Lecturer #30-days Challenger #Life Changer @Try to learn some new things every day.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade