在開發上,常常會有一些 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)
}
}
今天分享的東西其實也不是很重要,不會也沒關係,只是會了之後,可以提升開發時的效率~