iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

來寫看看app好了! Swift探索之旅系列 第 10

Day#10 初始專案...again (+版本控制)

前言

原本的想法其實是希望可以寫一個類似交友軟體的app,但中途卡關,也覺得學得不夠扎實,所以先寫了一個小小的to-do list當作起步。
現在可能懂的比較多一點點,看看能不能完成,就當作一個更大的挑戰吧୧༼✿ ͡◕ д ◕͡ ༽୨

XCode 專案

教大家如何開app新專案的文章有夠多XD,這邊就不贅述了。

專案大致的架構如下:arrow_down:

├─Info.plist
├─Resources
|  ├─AppDelegate
|  ├─SceneDelegate
|  ├─Extensions
|  └─DatabaseManager
├─Controllers
|  ├─ConversationViewController (原本的main ViewController)
|  ├─ChatViewController
|  ├─LoginViewController
|  ├─NewConversationViewController
|  ├─PhotoViewerViewController
|  ├─ProfileViewController
|  ├─RegisterViewController
|  └─VideoPlayerViewController
└─Views
   └─Storyboards
      ├─Main.Storyboard
      └─LaunchScreen.Storyboard

這次多了一些上次小專案沒有的架構與檔案,在此稍微說明一下。

Info.plist

放一些設定的地方。好隨便的說明啊
如果對應到以前後端開發的檔案,定位就像是config文件。
像是針對不同環境去設定變數,就可以在這邊更改。

AppDelegate & SceneDelegate

簡單來說,AppDelegate負責app的生命週期,而SceneDelegate負責前端畫面顯示的東西。
而你問我生命週期是什麼...感謝網路上總是有大神,能把???的技術用語以白話文精準清楚的解釋,參混淆系列:App 的生命週期「App Life Cycle」

其中講到當前ios13 AppDelegate中共有3個函式
:::info

  1. (:didFinishLaunchingWithOptions:) 當 App 完成系統初始化的動作時,第一時間會呼叫此函式,但當 App 進入到背景狀態時,再切回到原本的 App 中則不會呼叫該函式。
  2. (_:didFinishLaunchingWithOptions:) 當建立一個新的畫面時會呼叫此函式。當我們什麼都沒有設置的時候,Xcode 會自動在 Info.plist 中生成一個默認的檔案,名為「Default Configuration」並保留在 plist 中讓使用者可以找到
  3. (:didDiscardSceneSessions:) 在 iPadOS 中使用。當使用者切換畫面時(例如關閉程式等)會呼叫此函式。使用此函式可有效的釋放 App 的資源。
    :::

Extensions

一些共同元件,或是單純處理畫面、與商業邏輯無關的程式轉換。

DatabaseManager

跟DB連線,然後使用這個singleton連線去對DB進行資料存取。

版本控制

其實我前一份程式也有做版控,總之版控起手式

git init

在地端資料夾加上版控

git add .
git status

把目前的內容加入,使用git status可以看到還沒commit的內容已被加入

git commit -m "Init pj"

commit後可以使用log去看提交紀錄。

git log

不過有GUI就會想用一下,所以就下載了GitHub桌面版 XD
還算蠻好用的,也可連到GitHub、進行push。不過本系列文也不是旨在如何成為git大師,就大概帶過基本語法~~

Cocoapods

先前第一次初始專案時已經提過cocoapods的角色,那我這邊就不多加說明,直接附上內容。

pod init
open Podfile

可在終端機使用以上指令,然後貼上以下的dependencies。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'RealTimeChatroom' do
  # Comment the next line if you do not want to use dynamic frameworks
  use_frameworks!

  # Pods for RealTimeChatroom

pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Analytics'

pod 'MessageKit'
pod 'JGProgressHUD'
pod 'RealmSwift'
pod 'SDWebImage'

end

與上次不同,我們這次的DB採用firebase。存檔後把resources下載下來。

pod install

結語

接下來就可以打開workspace,明天會先從註冊/登入的畫面下手。

如果有任何錯誤或指教,歡迎留言給我!第10天了,加油加油 ໒( ͡ᵔ ▾ ͡ᵔ )७


上一篇
Day#09 使用者體驗
下一篇
Day#11 測試畫面
系列文
來寫看看app好了! Swift探索之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言