我如何 运行 从 swift 中的用户输入发出警报
How do I run an alarm from user input in swift
到目前为止,我已经创建了一个循环,它接受用户输入并将其与当前时间进行比较,如果匹配则发出警报。当我 运行 这样做时,它 运行 的使用率为 99% CPU,这让我的电脑几乎无法使用。我正在寻找一种方法 运行 以低得多的优先级或更好的优先级来替代循环。我看到的所有其他答案要么没有解决用户通过文本输入的问题,要么不在 swift 中。非常感谢任何帮助,下面是比较两个时间的函数,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()
}
}
呃。由于您概述的原因,您的 do/while 循环实际上是一种非常糟糕的方法。
在大多数情况下,NSTimer 是可行的方法。查看“scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:”方法。
您创建一个计时器并安排它,它会在所需时间调用您的选择器。
NSTimers 并不完全准确。它们可以关闭大约 50 毫秒,但向用户显示警报没问题。
到目前为止,我已经创建了一个循环,它接受用户输入并将其与当前时间进行比较,如果匹配则发出警报。当我 运行 这样做时,它 运行 的使用率为 99% CPU,这让我的电脑几乎无法使用。我正在寻找一种方法 运行 以低得多的优先级或更好的优先级来替代循环。我看到的所有其他答案要么没有解决用户通过文本输入的问题,要么不在 swift 中。非常感谢任何帮助,下面是比较两个时间的函数,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()
}
}
呃。由于您概述的原因,您的 do/while 循环实际上是一种非常糟糕的方法。
在大多数情况下,NSTimer 是可行的方法。查看“scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:”方法。
您创建一个计时器并安排它,它会在所需时间调用您的选择器。
NSTimers 并不完全准确。它们可以关闭大约 50 毫秒,但向用户显示警报没问题。