iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Mobile Development

在 iOS 開發路上的大小事系列 第 9

【在 iOS 開發路上的大小事-Day09】將常用的 Function 寫成一個 class,讓各個檔案都能使用

在開發上,常常會有一些 Function 是會在各個檔案中使用的,如果每次都要在需要用到這個 Function 的時候都重寫一次一樣的 Function,實在是有點沒效率

所以就來開始吧!

實作!

這邊我是打算示範 Alert 提示框跟取得系統時間這兩個 Function,因為這兩個算是我蠻常用到的

首先先新增一個 Swift 檔案

檔名就自行取,但記得開頭要大寫英文字母!!!

新增好之後,裡面會是空的,像下面這樣,CustomFunc 是我剛剛取的檔名

import Foundation

class CustomFunc {
    
}

之所以會選 Alert 跟一般函式來做示範
是因為兩者有一點點不一樣,一個是 UI 元件,一個是普通 Function

先來示範 Alert 的寫法,這邊示範的是只有一個關閉按鈕的,由於 Alert 是屬於 UI 元件,也就是 UIAlertController,所以在最上面要記得引入 UIKit,不然可是無法使用的!

還有一點是如果是一人開發的話,那可能還好,如果是多人開發的話,那建議還是寫一下每個參數的說明會比較好一點,不然修 bug 的時候可能會找到懷疑人生?

import Foundation
import UIKit

class CustomFunc {
    /// 提示框
    /// - Parameters:
    ///   - title: 提示框標題
    ///   - message: 提示訊息
    ///   - vc: 要在哪一個 UIViewController 上呈現
    ///   - actionHandler: 按下按鈕後要執行的動作,沒有的話,就填 nil
    class func customAlert(title: String, message: String, vc: UIViewController, actionHandler: (() -> Void)?) {
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
        let closeAction = UIAlertAction(title: "關閉", style: .default) { action in
            actionHandler?()
        }
        alertController.addAction(closeAction)
        vc.present(alertController, animated: true)
    }
}

再來是普通 Function 的寫法,這邊我是以取得系統時間的 Function 來做示範,其實就跟一般寫法差不多

import Foundation
import UIKit

class CustomFunc {
    ...
    
    // MARK: - 取得送出/更新留言的當下時間
    class func getSystemTime() -> String {
        let currectDate = Date()
        let dateFormatter: DateFormatter = DateFormatter()
        dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss"
        dateFormatter.locale = Locale.ReferenceType.system
        dateFormatter.timeZone = TimeZone.ReferenceType.system
        return dateFormatter.string(from: currectDate)
    }
}

兩個合在一起就像下面這樣

import Foundation
import UIKit

class CustomFunc {
    /// 提示框
    /// - Parameters:
    ///   - title: 提示框標題
    ///   - message: 提示訊息
    ///   - vc: 要在哪一個 UIViewController 上呈現
    ///   - actionHandler: 按下按鈕後要執行的動作,沒有的話就填 nil
    class func customAlert(title: String, message: String, vc: UIViewController, actionHandler: (() -> Void)?) {
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
        let closeAction = UIAlertAction(title: "關閉", style: .default) { action in
            actionHandler?()
        }
        alertController.addAction(closeAction)
        vc.present(alertController, animated: true)
    }
    
    // MARK: - 取得送出/更新留言的當下時間
    class func getSystemTime() -> String {
        let currectDate = Date()
        let dateFormatter: DateFormatter = DateFormatter()
        dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss"
        dateFormatter.locale = Locale.ReferenceType.system
        dateFormatter.timeZone = TimeZone.ReferenceType.system
        return dateFormatter.string(from: currectDate)
    }
}

今天分享的東西其實也不是很重要,不會也沒關係,只是會了之後,可以提升開發時的效率~


上一篇
【在 iOS 開發路上的大小事-Day08】讓你的 App 與世界接軌!
下一篇
【在 iOS 開發路上的大小事-Day10】為你的 UIButton 進行客製化吧!
系列文
在 iOS 開發路上的大小事30

尚未有邦友留言

立即登入留言