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

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

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

Q&A

0回答

297閲覧

Swift タイマーエラー

Skynet

総合スコア0

0グッド

0クリップ

投稿2023/01/14 18:18

前提

Swiftで災害者の避難を支援するアプリを作っています。
その中でもOO秒後に特定の動作を行ってくれる処理を作成中にエラーが起きて調べてもなかなか治せないため質問させて頂きました。また私はアプリ開発初心者なので分からないことが多々あると思いますがご教授のほどよろしくお願いします.

実現したいこと

ボタン押したらOO秒後に特定の音声が流れる.

発生している問題・エラーメッセージ

以下のエラーメッセージにより、ビルドができません

エラーメッセージ
Argument of '#selector' cannot refer to local function 'timerUpdate(timer:)'

@objc can only be used with members of classes, @objc protocols, and concrete extensions of classes

該当のソースコード

import SwiftUI struct escape2View: View { // UI表示に必要なパラメーター @State private var bpm: Int = 60 @State private var isPlaying: Bool = false let soundPlayer = SoundPlayer() // @State var isShowingView: Bool = false // コントローラーのインスタンス private var hapticscontroller = HapticController() var timer:Timer?=nil var body: some View { VStack { Text("ERESSアプリ") .font(.largeTitle) Image("zikkenmap2") .resizable() .frame(width: 400,height: 400) Text("避難して下さい!") .font(.system(size: 40)) // 再生・停止ボタン if isPlaying == false { Button(action: { hapticscontroller.bpm = Double(self.bpm) hapticscontroller.play() isPlaying = true soundPlayer.startPlay() Timer.scheduledTimer(timeInterval: 8,target: self, selector: #selector(timerUpdate(timer:)), userInfo: nil, repeats: false)//ここでエラーが出ます @objc func timerUpdate(timer: Timer){ soundPlayer.migiData }//ここでエラーが出ます }) { Text("避難開始") .font(.system(size: 30)) } } else { Button(action: { hapticscontroller.stop() isPlaying = false soundPlayer.finishPlay() }) { Text("避難終了") .font(.system(size: 30)) } } } } } struct escape2View_Previews: PreviewProvider { static var previews: some View { escape2View() } }

使用言語

SwiftUI

試したこと

エラーの吐いている文を13行目に移動させましたがエラーが出ました

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

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

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

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

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

Skynet

2023/01/15 13:52

hoshi-takonoriさん、コメントありがとうございます。返信が遅くなってしまい誠に申し訳ないです。 このサイトのやり方で書いたらエラーがなく警告だけになりました。なんとかビルドできそうです。実機でもビルドできるか試してみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問