我有一个UILocalNotification,应该是一天一个星期一到星期五,但不是在周末.我认为将通知的repeatInterval属性设置到NSWeekdayCalendarUnit将会实现这一点.可悲的是,我的通知仍在周末开放.有人可以建议为什么吗这是我的代码:
UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.alertAction = @"View"; localNotification.alertBody = NSLocalizedString(@"ALERT_MESSAGE",nil); localNotification.soundName = UILocalNotificationDefaultSoundName; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"MM-dd-yyyy HH:mm"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Toronto"]]; // Notification fire times are set by creating a notification whose fire date // is an arbitrary weekday at the correct time,and having it repeat every weekday NSDate *fireDate = [dateFormatter dateFromString:@"01-04-2012 11:00"]; localNotification.fireDate = fireDate; localNotification.repeatInterval = NSWeekdayCalendarUnit; [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; break; [localNotification release];
解决方法
iOS中的平日就是一星期内的一天.它没有“工作周”的内涵,而不是周末.
文档说明它更清楚一点,建议您使用1-7作为单位:
NSWeekdayCalendarUnit
Specifies the weekday unit.
The corresponding value is an kcfCalendarUnitSecond. Equal to kcfCalendarUnitWeekday. The weekday units are the numbers 1 through N (where for the Gregorian calendar N=7 and 1 is Sunday).
要正确设置从星期一到星期五的通知,这里有一些框架代码.你必须执行它5次,所以将其封装在一个fireDate参数的方法中是很好的.我已经展示了如何在星期一做到这一点.
UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease]; // Set this to an NSDate that is for the time you want,on Monday notification.fireDate = fireDate; // Repeat every week notification.repeatInterval = NSWeekCalendarUnit;