Ios Can';t从现在起x天内安排UILocalNotification
我现在已经尝试了太多小时,却没有找到问题/解决方案。此代码应该通过比较wd(选定的工作日)和item.itemDayName(当前工作日的Int)来安排x天之后的通知。目前,该代码仅在wd==7时有效,因为wd==7-->选择了所有工作日(wd 0-6=sun sat)。我将感谢任何反馈,谢谢Ios Can';t从现在起x天内安排UILocalNotification,ios,objective-c,nsdate,uilocalnotification,Ios,Objective C,Nsdate,Uilocalnotification,我现在已经尝试了太多小时,却没有找到问题/解决方案。此代码应该通过比较wd(选定的工作日)和item.itemDayName(当前工作日的Int)来安排x天之后的通知。目前,该代码仅在wd==7时有效,因为wd==7-->选择了所有工作日(wd 0-6=sun sat)。我将感谢任何反馈,谢谢 - (void)scheduleNotificationWithItem:(ToDoItem *)item andWeekday:(int)wd{ NSCalendar *calendar = [
- (void)scheduleNotificationWithItem:(ToDoItem *)item andWeekday:(int)wd{
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
if (wd < 7) {
[dateComps setYear:item.itemYear];
[dateComps setMonth:item.itemMonth];
if (item.itemDayName != (wd + 1)) {
int result = (wd + 1) - item.itemDayName;
result = result + item.itemDay;
[dateComps setDay:result];
}
else{
[dateComps setDay:item.itemDay];
}
}
else {
[dateComps setYear:item.itemYear];
[dateComps setMonth:item.itemMonth];
[dateComps setDay:item.itemDay];
}
[dateComps setHour:item.itemHour];
[dateComps setMinute:item.itemMinute];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = itemDate;
//localNotif.fireDate = [itemDate dateByAddingTimeInterval:-(1*60)];
localNotif.timeZone = [NSTimeZone defaultTimeZone];
if (wd < 7) {
[localNotif setRepeatInterval: NSCalendarUnitWeekOfMonth];
}
else {
[localNotif setRepeatInterval: NSCalendarUnitDay]; //Repeat daily
}
localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"Time to take %@!", nil),
item.itemName];
localNotif.alertAction = NSLocalizedString(@"View Details", nil);
localNotif.alertTitle = NSLocalizedString(@"Piller", nil);
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:item.itemName forKey:item.itemKeyName];
localNotif.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
-(void)scheduleNotificationWithItem:(ToDoItem*)item和Weekday:(int)wd{
NSCalendar*日历=[NSCalendar自动更新当前日历];
NSDateComponents*dateComps=[[NSDateComponents alloc]init];
如果(wd<7){
[dateComps setYear:item.itemYear];
[dateComps setMonth:item.itemMonth];
如果(item.itemDayName!=(wd+1)){
int result=(wd+1)-item.itemDayName;
结果=结果+项目.item天;
[dateComps setDay:结果];
}
否则{
[dateComps setDay:item.itemDay];
}
}
否则{
[dateComps setYear:item.itemYear];
[dateComps setMonth:item.itemMonth];
[dateComps setDay:item.itemDay];
}
[dateComps设置小时:item.itemHour];
[dateComps setMinute:item.itemMinute];
NSDate*itemDate=[calendar dateFromComponents:dateComps];
UILocalNotification*localNotif=[[UILocalNotification alloc]init];
if(localNotif==nil)
回来
localNotif.fireDate=itemDate;
//localNotif.fireDate=[itemDate-dateByAddingTimeInterval:-(1*60)];
localNotif.timeZone=[NSTimeZone defaultTimeZone];
如果(wd<7){
[localNotif setRepeatInterval:NSCalendarUnitWeekOfMonth];
}
否则{
[localNotif setRepeatInterval:NSCalendarUnitDay];//每天重复
}
localNotif.alertBody=[NSString stringWithFormat:NSLocalizedString(@“耗时%@!”,无),
项目名称];
localNotif.alertAction=NSLocalizedString(@“查看详细信息”,无);
localNotif.alertTitle=NSLocalizedString(@“Piller”,无);
localNotif.soundName=UILocalNotificationDefaultSoundName;
localNotif.applicationBadgeNumber=1;
NSDictionary*infoDict=[NSDictionary Dictionary WithObject:item.itemName forKey:item.itemKeyName];
localNotif.userInfo=infoDict;
[[UIApplication sharedApplication]scheduleLocalNotification:localNotif];
}
问题似乎在于“[localNotif setRepeatInterval:NSCalendarUnitWeekOfMonth];”将其更改为NSWeekCalendarUnit