【问题标题】:.calendarsForEntityType(EKEntityType.Reminder) not returning list of reminder lists.calendarsForEntityType(EKEntityType.Reminder) 不返回提醒列表
【发布时间】:2015-10-18 02:12:14
【问题描述】:

帮助, 试图从 EventKit 中获取提醒列表。 这只是不返回任何东西。如果我将 EKEntityType.Reminder 更改为 .Event 我会得到日历(事件),所以我知道代码通常是好的。

想法

var eventStore = EKEventStore()

func get_calendars(completed: (([EKCalendar])->())) {
   print("in Get_Calendars")

   let calendars = eventStore.calendarsForEntityType(EKEntityType.Reminder)

    for calendar in calendars as [EKCalendar] {
        // 2
        print(calendar.title)
        print(calendar.calendarIdentifier) 
    }
}

【问题讨论】:

    标签: ios swift reminders ekeventstore


    【解决方案1】:

    两个想法。

    1. 确保您已请求访问提醒:

      let eventStore = EKEventStore()
      eventStore.requestAccessToEntityType(EKEntityType.Reminder, completion: {
          granted, error in
      
          if granted {
              let calendars = eventStore.calendarsForEntityType(.Reminder)
      
              for calendar in calendars as [EKCalendar] {
                  print(calendar.title)
                  print(calendar.calendarIdentifier)
              }
          }
          else {
              print("Permission denied by user")
          }
      })
      
    2. 确保您至少有一个提醒。如果您在模拟器中运行,您可能没有任何提醒,也不会看到日历。至少,这是我在测试时看到的。

    【讨论】:

    • 是的,我可以访问提醒,因为我目前正在列出所有提醒。是的,有一大堆标题为 test1、test2、test3 等的提醒 :)
    • 好的。我傻了!我已经移动了代码并且没有检查访问权限。奇怪的是它在没有检查的情况下为 .event 类型工作。机器中的幽灵。谢谢迈克,我非常感谢您检查我的大脑并让我再次检查我的代码。现在一切正常:)
    • 不客气。您可以将此答案标记为已接受吗?此外,一旦您授予对设备或模拟器的访问权限,它就不会再次提示。我不得不在测试期间重置模拟器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2015-06-02
    • 2015-04-28
    • 2019-02-04
    相关资源
    最近更新 更多