【问题标题】:how can i set array in EKRecurrenceRule for day of the week?如何在 EKRecurrenceRule 中为一周中的某天设置数组?
【发布时间】:2017-05-22 10:59:41
【问题描述】:
  • 我想在用户选择的特定日期每周添加事件。可以是一个或多个,也可以是一整天。
  • 我将用户选择的日期值存储在模型类变量中。
  • 但是当我添加事件并选择日期时假设今天是星期一,我选择星期二和星期三并保存它。然后我检查它在星期一和星期三添加的 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)

【问题讨论】:

    标签: ios swift dayofweek ekevent ekrecurrencerule


    【解决方案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)
    

    【讨论】:

    • 您能否调试并检查周二和周三是否正在执行预期的 if 条件?什么是routineData?我猜如果检查失败并导致问题。
    • routineData 是我的模型类对象。但没关系,我自己解决了我的问题。在下面添加了我的解决方案。
    【解决方案2】:
    • 完美运行
    • 在这里,在 Recurrencerule 中添加特定日期很简单 dayOfTheWeek。
    • 我采用一个可变数组并按照我的在可变数组中添加工作日 健康)状况。
    • 在我的情况下,我将用户选择的日期保存在模型类变量中假设如果用户选择星期一和星期三,那么我将其保存为模型类变量中的星期一 = 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)
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 2015-12-11
      相关资源
      最近更新 更多