我有一个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;