如何在EKRecurrenceRule中为星期几设置数组?

时间:2017-05-22 10:59:41

标签: ios swift dayofweek ekevent ekrecurrencerule

  • 我想在用户选择的特定日期的每周添加活动。它可以是一个或多个,也可能是一整天。
  • 我将用户选择的日期值存储在模型类变量中。
  • 但是当我添加活动和选择天数时,假设今天是星期一,我选择星期二和星期三并保存。然后我检查它在周一和周三添加的iphone日历。
  • 我无法理解这个问题,即使我调试我的代码,我在模型类变量中选择正确的日期值,然后为什么结果不同?

  • 建议我任何解决方案或想法。

感谢

  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)

2 个答案:

答案 0 :(得分:1)

您可以将日期定义为EKRecurrenceDayOfWeek数组,如

let days = [EKRecurrenceDayOfWeek]()

或者您应该将NSMutableArray转换为预期的参数类型[EKRecurrenceDayOfWeek]

let rule = EKRecurrenceRule(recurrenceWith: .weekly, interval: 1, daysOfTheWeek: days as? [EKRecurrenceDayOfWeek], daysOfTheMonth: nil, monthsOfTheYear: nil, weeksOfTheYear: nil, daysOfTheYear: nil, setPositions: nil, end: nil)

答案 1 :(得分:0)

  • 完美地工作
  • 这里,简单地在Recurrencerule中添加特定日期 dayOfTheWeek。
  • 我接受一个mutable-array并按照我的可变数组添加工作日 条件。
  • 在我的情况下,我在模型类变量中保存用户选择的日期假设用户选择星期一和星期三然后我将其保存为模型类变量中的monday = 1和wednesday = 1 [例如:routinedata.routine_monday = 1]。 / LI>
  • 我在dayOfTheWeek中设置了mutable-array。见下面的代码。

        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)