如果声明:2个不同的功能彼此相等 - 斯威夫特

时间:2014-11-09 17:32:23

标签: ios xcode swift

我正在制作一个闹钟,当UIDatePicker中的时间等于我希望执行某个功能的确切时间时,我尝试了这个:

if theDatePicker == strDate {
    playTheSound()
} else {
    println("HELLO")
}

UIDatePicker等于确切时间时,我想要执行的功能

func playTheSound() {
    var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Annoying_Alarm_Clock-UncleKornicob-420925725", ofType: "mp3")!)
    playSound.text = "\(alertSound)"

    var error:NSError?
    audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
    audioPlayer.prepareToPlay()
    audioPlayer.play()

    let alert = UIAlertController(title: "WAKE UP", message:nil, preferredStyle: UIAlertControllerStyle.Alert);

    alert.message = "ITS TIME TO WAKE UP"

    let dismissHandler = {
        (action: UIAlertAction!) in
        self.dismissViewControllerAnimated(true, completion: { () -> Void in
        })
    }

    alert.addAction(UIAlertAction(title: "I'm Up!", style: .Default, handler: dismissHandler))
    presentViewController(alert, animated: true) { () -> Void in

    }
}

获取确切时间

func getTime() {
    var date = NSDate()
    var outputFormat = NSDateFormatter()
    outputFormat.locale = NSLocale(localeIdentifier:"en_US")
    outputFormat.dateFormat = "HH:mm:ss"
    timeLabel.text = (outputFormat.stringFromDate(date))  // This line here will update your timeLabel with the current time every second
}
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("getTime"), userInfo: nil, repeats: true)

我的UIDatePicker名为theDatePicker

func handler(sender: UIDatePicker) {
    var timeFormatter = NSDateFormatter()
    timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle

    var strDate = timeFormatter.stringFromDate(theDatePicker.date)
}

我的问题 当UIDatePicker和确切的时间相等时,我想让playTheSound()运行。

感谢您的时间和耐心。

干杯!

2 个答案:

答案 0 :(得分:1)

您可以使用定时事件,或者如果您还希望在应用未处于活动状态时进行呼叫,则可以使用本地通知。在datepicker中选择日期之后安排其中一个日期。

这个堆栈溢出帖子中解释了两者:Schedule multiple, daily events with NSTimer?

答案 1 :(得分:0)

我强烈推荐本地通知;这样,即使您的应用程序未打开,您也可以采取行动。

基本上,您呼叫系统在特定时间安排(您可以从日期选择器中提取)。当计划事件发生时 - 无论您的应用程序是打开还是关闭 - 系统都会通过委托方法回叫您的应用程序。然后你可以对事件采取行动(即播放你的声音)。