我想根据用户确定的重复周期,通过通知在tableView上随机显示所有单元格的值。 但是,现在相同的值继续出现在我的应用程序上。
也许我发现的原因是,当用户设置重复周期时,“ func sendLocalPush”仅被调用一次。另外,在下面的这种情况下,“ randomItem”是一个全局变量和固定变量。因此,将相同的值连续分配给“ forKey:”并显示。
ListViewController
import UIKit
var list = ["apple", "banana", "lemon"]
var randomItem = Int(arc4random_uniform(UInt32(list.count)))
LocalPushManagerController
func sendLocalPush(in time: TimeInterval){
let content = UNMutableNotificationContent()
content.body = NSString.localizedUserNotificationString(forKey: list[randomItem], arguments: nil)
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: time, repeats: true)
let request = UNNotificationRequest(identifier: "Timer", content: content, trigger: trigger)
center.add(request) { (error) in
if error == nil{
print("schedule push succeed")
}
}
}
设置vc
@IBAction func setButton(_ sender: Any) {
guard let text = timeField.text else {return}
guard let time = TimeInterval(text) else {return}
LocalPushManager.shared.sendLocalPush(in: time)
self.dismiss(animated: true, completion: nil)
}
我想到了我复制通知数组的想法,并继续执行以下过程:一旦触发通知并分配了新的随机值,就删除了分配的元素。 但是如上所述,通知请求仅被调用一次,因此我也不知道如何实现该想法。
您有解决此问题的想法吗?任何其他想法都欢迎。
谢谢。