2017-01-07 4 views
0

:私は、前の月のイベントのために正しい結果を得る1か月以上経過したEKEventを取得するにはどうすればよいですか?このコードを使用

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日5時00分00秒0000
2016年12月16日5時00分00秒0000

許可が...
発見を与えられました

以前の結果は0イベントに戻ります。

 eventStore.enumerateEvents(matching: predicate) { (result, stop) in 
     counter += 1 
    } 
    print("found \(counter) items using iterator") 

使用:2016年11月11日午前5時00分00秒+0000
2016年11月12日午前5時00分00秒+0000
を発見私も同様の結果との列挙を使用してみましたイテレータを使用した0個のアイテム

2014などのイベントを取得できますか?私はカレンダーアプリ(macOSとiOS)を使うときにそれらを見る。

答えて

1

私のデバイスの設定は、iOSのアップグレードプロセス中に変更されたと思います。設定/カレンダーでイベントの同期方法を指定できます。私はそれが "1ヶ月"に設定されていることがわかりました。私は今1ヶ月以上の出来事を取り出すことができます。

0

イベントストアは、範囲を大きくしない限り、それを与える述語に一致するものを返す必要があります(制限があり、それを調べる必要があります)。あなたの例では、1日の範囲内で検索するように指示するだけです。特定のカレンダーに絞り込んでいます(すべてのカレンダーを検索するためにnilを渡すこともできます)。あなたが2014年のイベントを望むなら、2014年に範囲を与えてください。

+0

より大きな範囲が空になります(以前は4年分のデータを取得できていましたが、今は1ヶ月しか使用できないようです)ので、1日とカレンダーで私はその日のEKEventsを知っています。 – Mozahler

+0

@Mozahler好奇心、私は述語で範囲制限を打つことを覚えている、と私は正直言ってそれは4年未満だったように感じる...しかし、私は現在6ヶ月の範囲(今日/ - 3ヶ月)、それはすべてを引き寄せます。あなたの述語はうまく形成されているように見えますが、違いはカレンダーを指定していないことだけです。私はあなたが店を作る場所を見ませんが、何らかの理由でそれが無ければ、それはとにかく些細なことでしょうか?興味深いもの: – ghostatron

+0

私は4ヶ月前から2ヶ月前に質問し、100代の代わりに6名を得ました。おそらくそれは雲の問題ですか?私はストアにもクエリを行う別の方法を検討します。入力いただきありがとうございます! – Mozahler

関連する問題