Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';t从现在起x天内安排UILocalNotification_Ios_Objective C_Nsdate_Uilocalnotification - Fatal编程技术网

Ios Can';t从现在起x天内安排UILocalNotification

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 = [

我现在已经尝试了太多小时,却没有找到问题/解决方案。此代码应该通过比较wd(选定的工作日)和item.itemDayName(当前工作日的Int)来安排x天之后的通知。目前,该代码仅在wd==7时有效,因为wd==7-->选择了所有工作日(wd 0-6=sun sat)。我将感谢任何反馈,谢谢

- (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