gpt4 book ai didi

swift - 无法将时间差设置为本地通知的时间间隔

转载 作者:行者123 更新时间:2023-11-30 10:47:36 25 4
gpt4 key购买 nike

我计算了两个时间的时间差:

func timeDiff() {
let time1 = currentTimeOutlet
let time2 = alarmTimeOutlet

let formatter = DateFormatter()
formatter.dateFormat = "hh:mma"

let date1 = formatter.date(from: time1!.text!)
let date2 = formatter.date(from: time2!.text!)

var elapsedTime = date2!.timeIntervalSince(date1!)

if (elapsedTime < 0) {
elapsedTime = elapsedTime + 86400
UserDefaults.standard.set(elapsedTime, forKey: "TIME")
}
else {
UserDefaults.standard.set(elapsedTime, forKey: "TIME")
}

elapsedTimeSecOutlet.text = String(elapsedTime)
let hours = floor(elapsedTime / 60 / 60)
let minutes = floor((elapsedTime - (hours * 60 * 60)) / 60)
timeDiffOutlet.text = ("\(Int(hours)) hr and \(Int(minutes)) min")
}

单击按钮后,我尝试将本地通知中的时间间隔设置为计算出的时间差(elapsedTime):

@IBAction func defaultOnAction(_ sender: UIButton) {
defaultOffOutlet.isHidden = false
timeDiff()

let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yay!")
} else {
print("Dh.")
}
}
let content = UNMutableNotificationContent()
content.title = "Rise & Shine"
content.subtitle = "Let's start the day!!!!!!"

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: elapsedTime, repeats: false)

let request = UNNotificationRequest(identifier: "timeElapsed", content: content, trigger: trigger)

UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}

当我将时间间隔设置为整数(例如 20.0)时,本地通知会起作用,但是当我将其替换为“elapsedTime”时,xcode 会提示我将其更改为 TimeInterval(elapsedTime)

我将其更改为 TimeInterval(elapsedTime)。但是,当我构建应用程序时,构建成功,但一旦单击按钮,应用程序就会崩溃。我已经检查过该按钮是否可以与其他代码一起使用,并且一旦我将时间间隔更改回整数,该按钮就可以工作。

有人有什么建议吗?是否可以将我的时间间隔设置为变量?

非常非常感谢!

最佳答案

时差方法更新。尝试这个代码的时差。我在 1 分钟后收到通知

let time1 = NSDate() //update your time
let minutes1: TimeInterval = 1 * 60
let time2 = Date() + minutes1 //update your time

var formatter = DateFormatter()
formatter.dateFormat = "HH:mm:ss"
let strdate1 = formatter.string(from: time1 as Date)
formatter.dateFormat = "HH:mm:ss"
let date1 = formatter.date(from: strdate1)

formatter = DateFormatter()
formatter.dateFormat = "HH:mm:ss"
let strdate2 = formatter.string(from: time2)
formatter.dateFormat = "HH:mm:ss"
let date2 = formatter.date(from: strdate2)

var elapsedTime = date2!.timeIntervalSince(date1!)

if (elapsedTime < 0) {
elapsedTime = elapsedTime + 86400
UserDefaults.standard.set(elapsedTime, forKey: "TIME")
}
else {
UserDefaults.standard.set(elapsedTime, forKey: "TIME")
}

希望这对您有帮助。

关于swift - 无法将时间差设置为本地通知的时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com