如何快速设置每周本地通知

我的代码有问题。

我想在xcode7中设置一个本地通知,我正在开发一个日历,你可以把你的大学的课程,事情是,我从json数据库得到的时间表,我想通知15分钟之前的课程开始,但我不知道为什么我的代码不工作。

这是我想在每个星期一13:40重复通知的一个例子。

我只能设置date和时间吗? 还是应该指定月份和年份呢?

var dateComp:NSDateComponents = NSDateComponents() dateComp.day = 01; dateComp.hour = 13; dateComp.minute = 40; dateComp.timeZone = NSTimeZone.systemTimeZone() var calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! var date:NSDate = calender.dateFromComponents(dateComp)! let notification = UILocalNotification() notification.fireDate = date notification.alertBody = "Swipe to unlock" notification.alertAction = "You've got a class soon!" notification.soundName = UILocalNotificationDefaultSoundName notification.userInfo = ["CustomField1": "w00t"] notification.repeatInterval = NSCalendarUnit.WeekOfYear UIApplication.sharedApplication().scheduleLocalNotification(notification) 

请检查这个function

 func setLNotification(weekDay:Int , hour:Int, min:Int, second:Int, alertBody:String, type:String, isRepeate:Bool){ let calender = NSCalendar(identifier: NSCalendarIdentifierGregorian) let dateComp: NSDateComponents? let components: NSDateComponents = NSDateComponents() if weekDay > 0{ components.setValue(-50, forComponent: NSCalendarUnit.Year) let previousDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))! dateComp = calender?.components([.Year,.WeekOfMonth,.Month], fromDate: previousDate) dateComp?.hour = hour dateComp?.minute = min dateComp?.second = second dateComp?.weekday = weekDay }else{ components.setValue(hour, forComponent: NSCalendarUnit.Hour) components.setValue(min, forComponent: NSCalendarUnit.Minute) components.setValue(second, forComponent: NSCalendarUnit.Second) let notifiDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))! dateComp = calender?.components([.Year,.Month,.Day,.Hour,.Minute,.Second], fromDate: notifiDate) } let notification = UILocalNotification() if isRepeate == true{ notification.repeatInterval = NSCalendarUnit.WeekOfYear notification.repeatCalendar = calender } notification.fireDate = calender?.dateFromComponents(dateComp!) notification.alertBody = alertBody notification.userInfo = ["day":"\(weekDay)","type":"\(type)"] UIApplication.sharedApplication().scheduleLocalNotification(notification) }