iPhoneアプリ開発・SwiftでtimeIntervalSinceNow使ってx秒後を生成しようと思ったらつまづいた
簡単な料理の時に使えるタイマーアプリを
iPhoneアプリ開発の学習のために作ってました。
で、iPhoneがバックグランドにいく時に
notificationを登録しようとしました。
要件としては、x秒後にnotificationを鳴らすというやつで
見つけたサンプルで10秒後だと以下の通りでした。
var notification = UILocalNotification() notification.fireDate = NSDate(timeIntervalSinceNow: 10) // すぐに通知したいので10秒後を取得 notification.timeZone = NSTimeZone.defaultTimeZone() notification.alertBody = "10秒経ちました" notification.alertAction = "OK" notification.soundName = UILocalNotificationDefaultSoundName UIApplication.sharedApplication().scheduleLocalNotification(notification)
で、このままだと10秒後にnotification来るので、
x秒後、つまりViewControllerから渡された変数の値によって
適切にnotificationが届くようにしようと思いました。
// xSecondsLeftは定義済み。残り秒xがIntで格納されてる count = xSecondsLeft notification.fireDate = NSDate(timeIntervalSinceNow: count)
こんな感じにするとエラーが出ました。
で、調べてみると
timerIntervalSinceNowの引数としてNSTimerInterval型じゃないといけなかったらしく
count = NSTimerInterval(xSecondsLeft) notification.fireDate = NSDate(timeIntervalSinceNow: count)
のようにすると無事動きましたw
単に10という数字を入れていたときは、
多分型が自動推論されてたんだと思います。
おそろしや・・・