在Swift中设置多次通知

所以我现在正在使用Swift,并且当一个开关被激活时,我有一个通知出现在某个时间。

不过,我希望在另一个开关被激活的时候再次发出另一个通知。

这是我的代码为ViewController:

@IBOutlet var myDatePicker: UIDatePicker! @IBOutlet var mySwitch: UISwitch! @IBOutlet var mySwitchTwo: UISwitch! var localNotification:UILocalNotification = UILocalNotification() var localNotificationTwo:UILocalNotification = UILocalNotification() func datePicker() { myDatePicker.datePickerMode = UIDatePickerMode.Date } func datePickerDefaultDate() { myDatePicker.date = NSDate().xDays(+1) } func toggleSwitch(){ if mySwitch.on{ localNotification.alertAction = "Open App" localNotification.alertBody = "Please take your medication." localNotification.fireDate = myDatePicker.date.fireDate localNotification.repeatInterval = NSCalendarUnit.CalendarUnitDay localNotification.timeZone = NSTimeZone.localTimeZone() UIApplication.sharedApplication().scheduleLocalNotification(localNotification) } else { localNotification.alertAction = "Open App" localNotification.alertBody = "This notification should not appear" localNotification.fireDate = NSDate(timeIntervalSinceNow: 999999999999) } } func toggleSwitchTwo() { if mySwitchTwo.on{ localNotification.alertAction = "Open App" localNotification.alertBody = "Please take your medication." localNotification.fireDate = myDatePicker.date.fireDateTwo localNotification.repeatInterval = NSCalendarUnit.CalendarUnitDay localNotification.timeZone = NSTimeZone.localTimeZone() UIApplication.sharedApplication().scheduleLocalNotification(localNotificationTwo) } else { localNotification.alertAction = "Open App" localNotification.alertBody = "This notification should not appear" localNotification.fireDate = NSDate(timeIntervalSinceNow: 999999999999) } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func switchPressed(sender: AnyObject) { toggleSwitch() } @IBAction func switchPressedTwo(sender: AnyObject) { toggleSwitchTwo() } } 

这是第一个swift文件的第一个开关:

 import Foundation public extension NSDate { func xDays(x:Int) -> NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: x, toDate: self, options: nil)! } var day: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day } var month: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month } var year: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year } var fireDate: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 8, minute: 0, second: 0, nanosecond: 0)! } } 

我想下一个通知时间在下午1点。 这是我为此所做的迅速的文件:

  import Foundation public extension NSDate { func xDaysTwo(x:Int) -> NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: x, toDate: self, options: nil)! } var dayTwo: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day } var monthTwo: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month } var yearTwo: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year } var fireDateTwo: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 13, minute: 0, second: 0, nanosecond: 0)! } } 

我遇到了问题,非常感谢你的帮助,提前致谢!

 import UIKit class ViewController: UIViewController { @IBOutlet var myDatePicker: UIDatePicker! @IBOutlet var mySwitch7am: UISwitch! @IBOutlet var mySwitch8am: UISwitch! var localNotification7am = UILocalNotification() var localNotification8am = UILocalNotification() var notificationsCounter = 0 func datePicker() { myDatePicker.datePickerMode = UIDatePickerMode.Date } func datePickerDefaultDate() { myDatePicker.date = NSDate().hour > 8 ? NSDate().xDays(+1) : NSDate() } func notificationsOptions7am() { localNotification7am.timeZone = NSTimeZone.localTimeZone() localNotification7am.repeatInterval = .CalendarUnitDay UIApplication.sharedApplication().scheduleLocalNotification(localNotification7am) localNotification7am.alertAction = "Open App" localNotification7am.soundName = UILocalNotificationDefaultSoundName } func notificationsOptions8am() { localNotification7am.timeZone = NSTimeZone.localTimeZone() localNotification7am.repeatInterval = .CalendarUnitDay UIApplication.sharedApplication().scheduleLocalNotification(localNotification8am) localNotification7am.alertAction = "Open App" localNotification7am.soundName = UILocalNotificationDefaultSoundName } func toggleSwitch7am(){ localNotification7am.alertBody = "Here is the seven o'clock notification" localNotification7am.fireDate = mySwitch7am.on ? myDatePicker.date.fireDateAt7am : NSDate().xDays(+36500) } func toggleSwitch8am(){ localNotification8am.alertBody = "Here is the eight o'clock notification" localNotification8am.fireDate = mySwitch8am.on ? myDatePicker.date.fireDateAt8am : NSDate().xDays(+36500) } override func viewDidLoad() { super.viewDidLoad() datePicker() datePickerDefaultDate() notificationsOptions7am() notificationsOptions8am() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func switchedOn7am(sender: AnyObject) { toggleSwitch7am() } @IBAction func switchedOn8am(sender: AnyObject) { toggleSwitch8am() } } 

扩展:

  import Foundation extension NSDate { func xDays(x:Int) -> NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: x, toDate: self, options: nil)! } var day: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitDay, fromDate: self).day } var month: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMonth, fromDate: self).month } var year: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: self).year } var fireDateAt7am: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 7, minute: 0, second: 0, nanosecond: 0)! } var fireDateAt8am: NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: 8, minute: 0, second: 0, nanosecond: 0)! } func fireDateAt(hr:Int, min:Int) -> NSDate { return NSCalendar.currentCalendar().dateWithEra(1, year: year, month: month, day: day, hour: hr, minute: min, second: 0, nanosecond: 0)! } }