Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.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 UILocalNotification可在特定日期重复触发_Ios_Uilocalnotification_Repeatingalarm - Fatal编程技术网

Ios UILocalNotification可在特定日期重复触发

Ios UILocalNotification可在特定日期重复触发,ios,uilocalnotification,repeatingalarm,Ios,Uilocalnotification,Repeatingalarm,我正在开发闹钟应用程序,我想做重复的闹钟功能,就像在iOS闹钟应用程序一样,我们可以选择重复选项,如每周一,每周二,。。。同样地 示例:如果仅选择“每周一”、“每周三”和“每周一” 接下来的星期一、星期三和星期五 应发出相应的警报通知 我试过: NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *componentsForFireDate = [calendar components:(NSCale

我正在开发闹钟应用程序,我想做重复的闹钟功能,就像在iOS闹钟应用程序一样,我们可以选择重复选项,如每周一,每周二,。。。同样地

示例:如果仅选择“每周一”、“每周三”和“每周一” 接下来的星期一、星期三和星期五 应发出相应的警报通知

我试过:

  NSCalendar *calendar = [NSCalendar currentCalendar];
  NSDateComponents *componentsForFireDate = [calendar components:(NSCalendarUnitYear | NSCalendarUnitWeekOfYear |  NSCalendarUnitHour | NSCalendarUnitMinute| NSCalendarUnitSecond | NSCalendarUnitWeekday) fromDate: [dictionaryForAlarm objectForKey:kAlarmSnoozeDate]];

 NSArray *arrayForRepeatDays = @[@"2",@"4",@"6"];

 for (NSString *dayOfWeek in arrayForRepeatDays) {

     [componentsForFireDate setDay:[dayOfWeek integerValue]];
     localNotification.repeatInterval =  NSCalendarUnitWeekOfMonth;;

     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
但这两天都没有着火,请纠正我


非常感谢你

我认为您需要这样编写代码:

NSCalendar *calendar = [NSCalendar currentCalendar];
  NSDateComponents *componentsForFireDate = [calendar components:(NSCalendarUnitYear | NSCalendarUnitWeekOfYear |  NSCalendarUnitHour | NSCalendarUnitMinute| NSCalendarUnitSecond | NSCalendarUnitWeekday) fromDate: [dictionaryForAlarm objectForKey:kAlarmSnoozeDate]];

 NSArray *arrayForRepeatDays = @[@"2",@"4",@"6"];

 for (NSString *dayOfWeek in arrayForRepeatDays) {

     [componentsForFireDate setWeekday: [dayOfWeek integerValue]] 
     [componentsForFireDate setHour: 10] ; // here you can set hr as per you need
     localNotification.repeatInterval =  NSWeekCalendarUnit;
     localNotification.fireDate=[calendar dateFromComponents:componentsForFireDate];
     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
我想这两个是让这一切顺利的原因:

[componentsForFireDate setWeekday: [dayOfWeek integerValue]] 
localNotification.repeatInterval =  NSWeekCalendarUnit;

NSCalendarUnitWeekOfMonth自NSWeekCalendarUnit仍未发出通知以来已使用NSCalendarUnitWeekOfMonth,而且在我保存它时,立即触发3个通知(因为今天保留为星期五、星期一和星期三已过)如何处理这个问题?检查我更新的答案我想你忘记设置FireDate了setHour的确切含义是什么?它指的是那天的时间,例如你设置的星期一,但在星期一哪个时间???那场火灾??所以,对于设置一天的时间,我们使用hr,min,secsure,我会试试这个