質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1035閲覧

ローカルプッシュ通知におけるTimerについて

mana_mana419

総合スコア27

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/19 19:32

編集2019/07/19 19:36

ただいまswiftのローカルプッシュ通知を学んでおり、その中でTimerを使う機会がありました。
参加書などを参考にし、なんとか下のプログラムを完成させることができ、ビルドも成功しました。

swift

1 2import UIKit 3import UserNotifications 4 5class ViewController2: UIViewController { 6 7 @IBOutlet var nameTextField: UITextField! 8 9 10 @IBOutlet var textField1: UITextField! 11 12 @IBOutlet var textField2: UITextField! 13 14 @IBOutlet var textField3: UITextField! 15 16 @IBOutlet var textField4: UITextField! 17 18 var timer:Timer? 19 20 override func viewDidLoad() { 21 super.viewDidLoad() 22 23 // Do any additional setup after loading the view. 24 } 25 26 27 @IBAction func push(_ sender: Any) { 28 29 timerUpdate() 30 31 } 32 33 34 func timerUpdate(){ 35 36 let content = UNMutableNotificationContent() 37 let content2 = UNMutableNotificationContent() 38 let content3 = UNMutableNotificationContent() 39 let content4 = UNMutableNotificationContent() 40 41 content.title = nameTextField.text! 42 content.sound = UNNotificationSound.default 43 content.body = textField1.text! 44 45 let trigger1 = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) 46 47 let request1 = UNNotificationRequest(identifier: "ID2", content: content, trigger: trigger1) 48 UNUserNotificationCenter.current().add(request1,withCompletionHandler: nil) 49 50 51 content2.title = nameTextField.text! 52 content2.body = textField2.text! 53 let trigger2 = UNTimeIntervalNotificationTrigger(timeInterval: 8, repeats: false) 54 let request2 = UNNotificationRequest(identifier: "ID3", content: content2, trigger: trigger2) 55 UNUserNotificationCenter.current().add(request2,withCompletionHandler: nil) 56 57 content3.title = nameTextField.text! 58 content3.body = textField3.text! 59 let trigger3 = UNTimeIntervalNotificationTrigger(timeInterval: 11, repeats: false) 60 let request3 = UNNotificationRequest(identifier: "ID4", content: content3, trigger: trigger3) 61 UNUserNotificationCenter.current().add(request3,withCompletionHandler: nil) 62 63 content4.title = nameTextField.text! 64 content4.body = textField4.text! 65 66 if let path = Bundle.main.path(forResource: "bird", ofType: "jpg"){ 67 68 content4.attachments = [try! UNNotificationAttachment(identifier: "ID5", url: URL(fileURLWithPath:path ), options: nil)] 69 70 } 71 72 let trigger4 = UNTimeIntervalNotificationTrigger(timeInterval: 14, repeats: false) 73 let request4 = UNNotificationRequest(identifier: "ID5", content: content4, trigger: trigger4) 74 UNUserNotificationCenter.current().add(request4,withCompletionHandler:nil) 75 76} 77

しかしこの中で何故Timerが必要なのか?また必要であれば今まで自分はvar 変数名 = Timer()と変数に代入して使うやり方、もしくはTimer.scheduledTimer()のようなものを個別に使うことしか経験がなく、なぜvar timer:Timer?という形になったのかが理解できませんでした。
もしわかる方がいましたら、是非教えていただきたいです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

var timer:Timer?

このtimerってのは使われてませんよね?
この行をコメントアウトしてもビルドできるのではないかと。

投稿2019/07/19 23:48

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mana_mana419

2019/07/25 18:15

回答ありがとうございます! なんでこのコードがあるかわからなかったため、やはり使われていないものだったと改めてわかってよかったです! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問