如何快速从用户输入中运行警报

Posted

技术标签:

【中文标题】如何快速从用户输入中运行警报【英文标题】:How do I run an alarm from user input in swift 【发布时间】:2015-07-20 12:26:38 【问题描述】:

到目前为止,我已经创建了一个循环,它接受用户输入并将其与当前时间进行比较,如果匹配则发出警报。当我运行它时,它以 99% 的 CPU 使用率运行,使我的计算机几乎无法使用。我正在寻找一种方法以更低的优先级或更好的优先级运行它,以替代循环。我看到的所有其他答案要么没有解决用户通过文本输入的问题,要么没有迅速解决。非常感谢任何帮助,下面是比较两次的函数,alarmHour 和 alarmMinute 变量是用户输入的变量。

func runTimer() 
    var rightTime:Bool
    do 
        let date = NSDate()
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
        let hour = String(components.hour)
        let minutes = String(components.minute)
        if (hour == globe.alarmHour && minutes == globe.alarmMinutes)
            rightTime = true
         else 
            rightTime = false
        
     while (rightTime == false)
    if (rightTime == true) 
        prepareAudio()
        AlarmSound.play()
    


【问题讨论】:

【参考方案1】:

呃。由于您概述的原因,您的 do/while 循环实际上是一种非常糟糕的方法。

在大多数情况下,一个 NSTimer 是要走的路。看看 'scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:` 方法。

您创建一个计时器并安排它,它会在所需时间调用您的选择器。

NSTimers 并不完全准确。它们可以关闭大约 50 毫秒,但用于向用户显示警报就可以了。

【讨论】:

以上是关于如何快速从用户输入中运行警报的主要内容,如果未能解决你的问题,请参考以下文章

当用户输入的时间低于预期时间时,如何在 swiftUI 中显示警报消息?

如何在警报视图中提示用户输入文本

用户输入太长,警报对话框无法处理

警报代码有问题,需要用户输入和后台计时器。定时器工作,但不停止程序

在用户在java中输入正确的输入之前,如何从用户那里获得输入?

如何在 Flex actionscript 中确认文本输入