Ios 如何检索大于1个月的事件?

Ios 如何检索大于1个月的事件?,ios,swift,eventkit,Ios,Swift,Eventkit,使用此代码: func sampleCase() { var dateConstructor = DateComponents() dateConstructor.year = 2016 dateConstructor.month = 12 dateConstructor.day = 15 let calendar: Calendar = Calendar.current let workCalendar = CalendarUtiliti

使用此代码:

    func sampleCase() {
    var dateConstructor = DateComponents()
    dateConstructor.year = 2016
    dateConstructor.month = 12
    dateConstructor.day = 15
    let calendar: Calendar = Calendar.current
    let workCalendar = CalendarUtilities.calendar("WorkSchedule", using: eventStore)
    let referenceDate = calendar.date(from: dateConstructor)!
        let startDate = referenceDate
        let endDate = referenceDate.addingDays(1)  // midnight
        let range = DateRange(start: startDate, andEnd: endDate)
    let predicate = eventStore.predicateForEvents(withStart: range.startDate, end:range.endDate, calendars:[workCalendar])
    let events = eventStore.events(matching: predicate)
    print("Found: \(events.count) events")
    print("used:\(startDate)")
    print("\(endDate)")

}
我只得到上个月事件的正确结果。。。(这些示例使用具有事件且应返回非零值的日期。)

已授予授权…
发现:1个事件
使用时间:2016-12-15 05:00:00+0000
2016-12-16 05:00:00+0000

返回早期将导致0个事件。 我还尝试使用枚举来获得类似的结果:

        eventStore.enumerateEvents(matching: predicate) { (result, stop) in
        counter += 1
    }
    print("found \(counter) items using iterator")
使用时间:2016-11-11 05:00:00+0000
2016-11-12 05:00:00+0000
使用迭代器找到0项


有可能从2014年等地检索事件吗?我在使用日历应用程序(macOS和iOS)时看到它们。

事件存储应该返回与您给定的谓词匹配的任何内容,只要您不将范围设置得太大(有一个限制,我必须去查找)。在您的示例中,您只告诉它在1天的范围内搜索。您还将其缩小到一个特定日历(您可以传递nil来搜索所有日历)。如果您想要2014年的事件,那么在2014年给它一个范围。

事件存储应该返回与您给它的谓词匹配的任何内容,只要您不使范围太大(有一个限制,我必须去查找)。在您的示例中,您只告诉它在1天的范围内搜索。您还将其缩小到一个特定日历(您可以传递nil来搜索所有日历)。如果你想要2014年的事件,那么在2014年给它一个范围。

我想发生的是,在iOS升级过程中,我的设备上的设置发生了变化(我不知道如何)。在“设置/日历”中,可以指定事件的同步方式。我发现它被设置为“1个月”。我现在能够检索1个月以上的事件

我想发生的事情是,在iOS升级过程中,我的设备上的设置发生了变化(我不知道怎么做)。在“设置/日历”中,可以指定事件的同步方式。我发现它被设置为“1个月”。我现在能够检索1个月以上的事件

更大的范围是空的(你过去可以得到大约4年的数据,现在看来你只能得到一个月),所以我把它设置得很小,在一天和一个日历上,我知道这一天有很多事件。@Mozahler好奇的是,我确实记得用谓词达到了范围限制,老实说,我觉得这还不到4年……但我在应用商店里有一个应用程序,目前的范围是6个月(今天是+/-3个月),它能吸引一切。您的谓词看起来格式良好,唯一的区别是我没有指定日历。我不知道你在哪里开商店,但那应该是微不足道的,除非它因为某种原因是零?有趣。我在4个月前到2个月前查询过,得到的是6而不是100。。。我会看看它们是什么。也许这是一个云问题?我还将研究查询商店的其他方法。谢谢你的意见!更大的范围是空的(你过去可以得到大约4年的数据,现在看来你只能得到一个月),所以我把它设置得很小,在一天和一个日历上,我知道这一天有很多事件。@Mozahler好奇的是,我确实记得用谓词达到了范围限制,老实说,我觉得这还不到4年……但我在应用商店里有一个应用程序,目前的范围是6个月(今天是+/-3个月),它能吸引一切。您的谓词看起来格式良好,唯一的区别是我没有指定日历。我不知道你在哪里开商店,但那应该是微不足道的,除非它因为某种原因是零?有趣。我在4个月前到2个月前查询过,得到的是6而不是100。。。我会看看它们是什么。也许这是一个云问题?我还将研究查询商店的其他方法。谢谢你的意见!