gpt4 book ai didi

swift - UNTimeIntervalNotificationTrigger nextTriggerDate() 是否给出了错误的日期?

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:18 26 4
gpt4 key购买 nike

我正在更新我的 localnotifications 以使用 iOS 10,但我遇到了一个问题,我认为 nextTrigger 函数返回的不是“满足触发条件的下一个日期。”而是返回当前日期时间加上您最初将 UNTimeInvervalNotificationTrigger 设置为的时间。

因此,如果您将触发器设置为在 60 秒后关闭,根据文档,我希望当我调用 nextTriggerDate() 时,我会返回设置触发器 + 60 秒时的任何日期时间.因此,如果我将其设置为 12:00:00,我预计 nextTriggerDate() 将是 12:01:00。然而,我遇到的是它返回当前日期 + 60 秒的任何值。

我编写了一个示例来安排 UNTimeIntervalNotificationTrigger,然后每秒打印出 nextTriggerDate()。当我运行它时,我每秒都会得到一个新的 nextTriggerDate。像这样:

            //Optional(2016-11-03 21:26:31 +0000)
//Optional(2016-11-03 21:26:32 +0000)
//Optional(2016-11-03 21:26:33 +0000)
//Optional(2016-11-03 21:26:34 +0000)
//Optional(2016-11-03 21:26:35 +0000)
//Optional(2016-11-03 21:26:36 +0000)

我用 apple 打开了一个 TSI,但是……你知道……这需要一段时间。所以我想我会看看这里是否有人有任何见解。我怀疑这是一个错误,如果我得到更多信息,我会更新它。

这是我用来说明问题的代码:

import UIKit
import UserNotifications

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var setButton: UIButton!

@IBOutlet weak var timePicker: UIPickerView!

weak var timer: Timer?

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBAction func setButtonAction(_ sender: UIButton) {
var mySecond = pickerSelection

// build notification
let content = UNMutableNotificationContent()
content.title = "Title of notification"
content.body = "This is the body of the notification"
content.sound = UNNotificationSound.default()
content.categoryIdentifier = "myCategory"

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: Double(mySecond), repeats: false)

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

UNUserNotificationCenter.current().add(request) {(error) in
if let error = error {
print("Uh oh! We had an error: \(error)")
}
}

self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.tick), userInfo: nil, repeats: true)
}

let pickerData = [":00",":01",":02",":03",":04",":05",":06",":07",":08",":09",":10",":11",":12",":13",":14",":15",":16",":17",":18",":19",":20",":21",":22",":23",":24",":25",":26",":27",":28",":29",":30",":31",":32",":33",":34",":35",":36",":37",":38",":39",":40",":41",":42",":43",":44",":45",":46",":47",":48",":49",":50",":51",":52",":53",":54",":55",":56",":57",":58",":59"]


var pickerSelection = 0


override func viewDidLoad() {
super.viewDidLoad()
self.timePicker.dataSource = self
self.timePicker.delegate = self
self.timePicker.selectRow(pickerSelection, inComponent: 0, animated: false)
}

// The number of columns of data
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

// The number of rows of data
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}

// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let pickerLabel = UILabel()
let titleData = pickerData[row]
let myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Futura", size: 44.0)!])
pickerLabel.attributedText = myTitle
pickerLabel.textAlignment = .center

return pickerLabel
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerSelection = row
}

func tick() {
let center = UNUserNotificationCenter.current()
center.getPendingNotificationRequests(completionHandler: { (scheduledLocalNotifications) in
for localNotice in scheduledLocalNotifications {
var localTrigger = localNotice.trigger as! UNTimeIntervalNotificationTrigger

var localTime = localTrigger.nextTriggerDate()
// ** This output shows something like this:

//Optional(2016-11-03 21:26:31 +0000)
//Optional(2016-11-03 21:26:32 +0000)
//Optional(2016-11-03 21:26:33 +0000)
//Optional(2016-11-03 21:26:34 +0000)
//Optional(2016-11-03 21:26:35 +0000)
//Optional(2016-11-03 21:26:36 +0000)
print("\(localTime)")
}
})
}
}

最佳答案

收到 Apple DTS 的回复,并被告知我所描述的功能是它设计的工作原理。尽管我认为文档的解释有所不同,但他们告诉我“考虑到实现,文档是乐观的”。不管怎样,我通过在我的代码中跟踪触发日期来解决这个问题。我希望这个答案可以帮助遇到与我相同问题的其他人。

关于swift - UNTimeIntervalNotificationTrigger nextTriggerDate() 是否给出了错误的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40411812/

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