我怎样才能在EKRecurrenceRule中设置一周的数组?

  • 我想在用户select的特定date每周添加活动。 它可以是一个或多个,也可以是一整天。
  • 我在模型类variables中存储用户select的date值。
  • 但是,当我添加事件,并select今天假设今天是星期一,我select星期二和星期三,并保存它。 然后我检查它在周一和周三添加的iPhone日历。
  • 我不能理解这个问题,即使我debugging我的代码,我为模型类variables的一天select得到正确的价值,那么为什么结果不同?

  • build议我任何解决scheme或想法。

谢谢

var days = [EKRecurrenceDayOfWeek]() if routineData.routine_monday == 1 { days = [EKRecurrenceDayOfWeek(.monday)] } if routineData.routine_tuesday == 1 { days = [EKRecurrenceDayOfWeek(.tuesday)] } if routineData.routine_wednesday == 1 { days = [EKRecurrenceDayOfWeek(.wednesday)] } if routineData.routine_thursday == 1 { days = [EKRecurrenceDayOfWeek(.thursday)] } if routineData.routine_friday == 1 { days = [EKRecurrenceDayOfWeek(.friday)] } if routineData.routine_saturday == 1 { days = [EKRecurrenceDayOfWeek(.saturday)] } if routineData.routine_sunday == 1 { days = [EKRecurrenceDayOfWeek(.sunday)] } let rule = EKRecurrenceRule(recurrenceWith: .weekly, interval: 1, daysOfTheWeek: days as? [EKRecurrenceDayOfWeek], daysOfTheMonth: nil, monthsOfTheYear: nil, weeksOfTheYear: nil, daysOfTheYear: nil, setPositions: nil, end: nil) event.addRecurrenceRule(rule) 

您可以将天数定义为EKRecurrenceDayOfWeek数组

 let days = [EKRecurrenceDayOfWeek]() 

或者你应该把NSMutableArray成期望的参数types[EKRecurrenceDayOfWeek]

 let rule = EKRecurrenceRule(recurrenceWith: .weekly, interval: 1, daysOfTheWeek: days as? [EKRecurrenceDayOfWeek], daysOfTheMonth: nil, monthsOfTheYear: nil, weeksOfTheYear: nil, daysOfTheYear: nil, setPositions: nil, end: nil) 
  • 完美地工作
  • 在这里,它很容易在dayOfWeek中的Recurrencerule中添加特定的一天。
  • 我拿一个可变数组,并根据我的情况在可变数组中添加星期几。
  • 在我的情况下,我保存用户select的一天在模型类variables假设如果用户select星期一和星期三,然后我将它保存为模型类variables星期一= 1和星期三= 1 [例如:routinedata.routine_monday = 1]。
  • 我在dayOfTheWeek中设置了可变数组。 看下面的代码。

      let tempDays = NSMutableArray() if routineData.routine_monday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.monday)) //days = [EKRecurrenceDayOfWeek(.monday)] } if routineData.routine_tuesday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.tuesday)) } if routineData.routine_wednesday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.wednesday)) } if routineData.routine_thursday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.thursday)) } if routineData.routine_friday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.friday)) } if routineData.routine_saturday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.saturday)) } if routineData.routine_sunday == 1 { tempDays.add(EKRecurrenceDayOfWeek(.sunday)) } print("day selected\(tempDays)") let rule = EKRecurrenceRule(recurrenceWith: .weekly, interval: 1, daysOfTheWeek: tempDays as? [EKRecurrenceDayOfWeek], daysOfTheMonth: nil, monthsOfTheYear: nil, weeksOfTheYear: nil, daysOfTheYear: nil, setPositions: nil, end: nil) event.addRecurrenceRule(rule)