Balbas Code

Swiftでタイマーモデルを使おう

公開日: 2024-02-01 22:43:57

Swiftでタイマーモデルを使って、関数呼び出しを行うことができるコード
こちらのコードはタイマー使って関数や秒数をデータ件数によって入れ替える必要がある場合に使うコード。


データベースに登録された値によって、タイマーの秒数後に特定の関数を呼び出す等のことができます。



タイマーモデル


/// タイマーモデル
class TimerModel {
private var timer: Timer?
private var action: (() -> Void)?
private var timeInterval: TimeInterval

init(timeInterval: TimeInterval, action: @escaping (() -> Void)) {
self.timeInterval = timeInterval
self.action = action
}

/// 関数を再呼び出し
@objc private func callAction() {
action?()
}

/// タイマー起動処理
func start() {
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: timeInterval, target: self, selector: #selector(callAction), userInfo: nil, repeats: true)
}

/// タイマー起動処理(1回のみ)
func onceStart() {
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: timeInterval, target: self, selector: #selector(callAction), userInfo: nil, repeats: false)
}

/// タイマー停止処理
func stop() {
timer?.invalidate()
timer = nil
}
}

 


呼び出し側


var testTimer: TimerModel?
var timeInterval: Double = 3.0

// タイマーで呼び出す関数と秒数を設定する
testTimer = TimerModel(timeInterval: timeInterval, action: {
ptint("呼ばれました")
}

// 設定したタイマーを起動
testTimer?.start()