Objective c UILocalNotification每周六上午12:00
我试着每周六重复一次,但没有成功。 我尝试以下方法:Objective c UILocalNotification每周六上午12:00,objective-c,nsdate,uilocalnotification,repeat,nsdatecomponents,Objective C,Nsdate,Uilocalnotification,Repeat,Nsdatecomponents,我试着每周六重复一次,但没有成功。 我尝试以下方法: // Create notification for every saturday at 12:00 am NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:NSUIntegerMax fromDate:
// Create notification for every saturday at 12:00 am
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSUIntegerMax fromDate:[NSDate date]];
[components setWeekday:7]; // Saturday
[components setHour:12]; // 12 am
[components setMinute:0];
[components setSecond:0];
NSDate *fireDate = [gregorian dateFromComponents:components];
NSLog(@"%@", fireDate);
[[NotificationsManager sharedManager] configureLocalAlertMessage:message
fireDate:fireDate
repeatIntervalUnit:NSWeekCalendarUnit
type:kNotificationTypeMoneyBox];
但“fireDate”返回:“2013-03-12 11:00:00+0000”即今天
有什么帮助吗?
谢谢
编辑:
配置通知的代码
- (void)configureLocalAlertMessage:(NSString *)message fireDate:(NSDate *)date repeatIntervalUnit:(NSCalendarUnit)repeat type:(NotificationType)type {
// Local notification
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.timeZone = [NSTimeZone systemTimeZone];
notification.fireDate = date;
notification.repeatInterval = repeat;
notification.soundName = UILocalNotificationDefaultSoundName;
notification.hasAction = YES;
notification.alertBody = message;
notification.userInfo = @{kNotificationTypeKey : @(type)};
notification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
// Schedule
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
NSCalendar*gregorian=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents*weekdayComponents=[公历成分:(NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSYearCalendarUnit)fromDate:idate];
int weekday=[weekdayComponents weekday];
NSDate*下一个日期;
NSDateComponents*offsetComponents=[[NSDateComponents alloc]init];
if(weekday),其中是设置本地通知的代码。此代码仅用于创建日期。我添加了新信息。谢谢!“当信息不一致时,日历可能会忽略某些组件参数,或者该方法可能返回nil。”好的,但是我该怎么做呢?我需要在12周内的每个星期六的12:00发出UILocalNotification…提供一致的信息。NSCalendar不知道在NSDate中输入什么日期,所以显然它默认为今天。
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =[gregorian components:(NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSYearCalendarUnit) fromDate:idate];
int weekday = [weekdayComponents weekday];
NSDate *nextdate ;
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
if(weekday <= 5)
{
/* it is my case to check the weekday, if it is less or greater than 5*/
}
else
{
[offsetComponents setDay:7];
[offsetComponents setHour:12];
[offsetComponents setMinute:0];
[offsetComponents setSecond:0];
nextdate = [gregorian dateByAddingComponents:offsetComponents toDate:idate options:0];
}
[offsetComponents release];
[gregorian release];