(環境)
xcode:11.3
version 5.1.3
(参考文献)
詳解 Swift 第5版
著者 萩原剛志
発行者 SBクリエイティブジャブ式会社
上記の参考文献からSwiftを学んでおります。下記に秒数をカウントダウンしてcountDownLabelに残秒数を表示させるサンプルコードで一点わからない点があります。
let settingKey = "timer_value" //ここです
の定数の宣言なのですが、ここでsettingKeyの定数に文字列の"timer_value"を代入することに何か意味があるのでしょうか?
settings.register(defaults: [settingKey:10])
やlet timerValue = settings.integer(forKey: settingKey)
で初期値として10を登録したり取り出したりする際に、実際にはsettingKeyをキー(ラベル)の様な使い方をしており、特に何かの文字列を代入することに意味がない様に思えるのですが、文法的な意味合いがわかればご教示いただけると嬉しいです。
Swift
1 2import UIKit 3 4class ViewController: UIViewController { 5 6 var timer : Timer? 7 var count = 0 8 let settingKey = "timer_value" //ここです 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // Do any additional setup after loading the view. 13 let settings = UserDefaults.standard 14 settings.register(defaults: [settingKey:10]) 15 } 16 17 @IBOutlet weak var countDownLabel: UILabel! 18 19 20 @IBAction func settingButtonAction(_ sender: Any) { 21 // timerをアンラップしてnowTimerに代入 22 if let nowTimer = timer { 23 // もしタイマーが、実行中だったら停止 24 if nowTimer.isValid == true { 25 // タイマー停止 26 nowTimer.invalidate() 27 } 28 } 29 // 画面遷移を行う 30 performSegue(withIdentifier: "goSetting", sender: nil) 31 } 32 33 @IBAction func startButtonAction(_ sender: Any) { 34 // timerをアンラップしてnowTimerに代入 35 if let nowTimer = timer { 36 // もしタイマーが、実行中だったらスタートしない 37 if nowTimer.isValid == true { 38 // 何も処理しない 39 return 40 } 41 } 42 43 // タイマーをスタート 44 timer = Timer.scheduledTimer(timeInterval: 1.0, 45 target: self, 46 selector: #selector(self.timerInterrupt(_:)),//ここです 47 userInfo: nil, 48 repeats: true) 49 50 } 51 52 @IBAction func stopButtonAction(_ sender: Any) { 53 // timerをアンラップしてnowTimerに代入 54 if let nowTimer = timer { 55 // もしタイマーが、実行中だったら停止 56 if nowTimer.isValid == true { 57 // タイマー停止 58 nowTimer.invalidate() 59 } 60 } 61 } 62 63 func displayUpdate() -> Int { 64 65 // UserDefaultsのインスタンスを生成 66 let settings = UserDefaults.standard 67 // 取得した秒数をtimerValueに渡す 68 let timerValue = settings.integer(forKey: settingKey) 69 // 残り時間(remainCount)を生成 70 let remainCount = timerValue - count 71 // remainCount(残りの時間)をラベルに表示 72 countDownLabel.text = "残り(remainCount)秒" 73 // 残り時間を戻り値に設定 74 return remainCount 75 76 } 77 78 // 経過時間の処理 79 @objc func timerInterrupt(_ timer:Timer) { 80 81 // count(経過時間)に+1していく 82 count += 1 83 // remainCount(残り時間)が0以下のとき、タイマーを止める 84 if displayUpdate() <= 0 { 85 // 初期化処理 86 count = 0 87 // タイマー停止 88 timer.invalidate() 89 } 90 } 91 92 override func viewDidAppear(_ animated: Bool) { 93 // カウント(経過時間)をゼロにする 94 count = 0 95 // タイマーの表示を更新する 96 _ = displayUpdate() 97 } 98 99 100} 101 102
回答1件
あなたの回答
tips
プレビュー