iOS 4.3.1에서 이벤트 킷을 사용하여 지정된 시간 간격으로 모든 이벤트를 검색합니다. 그러나 다음과 같은 문제가 발생합니다.이벤트 키트를 사용하여 지정된 시간 간격으로 이벤트 가져 오기가 예상대로 작동하지 않습니다.
1) 시작일 [NSDate distantPast] 및 종료일 [NSDate distantFuture]를 사용하여 이벤트를 반환하지 않습니다.
EKEventStore *store = [[EKEventStore alloc] init];
// Create the predicate.
NSPredicate *eventPredicate = [store predicateForEventsWithStartDate:[NSDate distantPast] endDate:[NSDate distantFuture] calendars:store.calendars];
// Fetch all events that match the predicate.
NSArray *events = [[store eventsMatchingPredicate:eventPredicate] retain];
2) 10 년 ago에 시작 날짜와 10 년 종료 날짜를 설정하면 이제 반환되는 다른 2005 아무것도까지 이벤트를 가져옵니다.
EKEventStore *store = [[EKEventStore alloc] init];
CFGregorianDate gregorianStartDate, gregorianEndDate;
CFGregorianUnits startUnits = {-10, 0, 0, 0, 0, 0};
CFGregorianUnits endUnits = {10, 0, 0, 0, 0, 0};
CFTimeZoneRef timeZone = CFTimeZoneCopySystem();
gregorianStartDate = CFAbsoluteTimeGetGregorianDate(
CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTimeGetCurrent(),
timeZone,
startUnits),
timeZone);
gregorianStartDate.hour = 0;
gregorianStartDate.minute = 0;
gregorianStartDate.second = 0;
gregorianEndDate = CFAbsoluteTimeGetGregorianDate(
CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTimeGetCurrent(),
timeZone,
endUnits),
timeZone);
gregorianEndDate.hour = 0;
gregorianEndDate.minute = 0;
gregorianEndDate.second = 0;
NSDate* startDate =
[NSDate dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gregorianStartDate, timeZone)];
NSDate* endDate =
[NSDate dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gregorianEndDate, timeZone)];
CFRelease(timeZone);
// Create the predicate.
NSPredicate *eventPredicate = [store predicateForEventsWithStartDate:startDate endDate:endDate calendars:store.calendars];
// Fetch all events that match the predicate.
NSArray *events = [[store eventsMatchingPredicate:eventPredicate] retain];
게시 된 코드 스 니펫이 맞는지 또는 내가 잘못하고 있는지 궁금합니다. 이상적으로 나는 [NSDate distantPast]와 [NSDate distantFuture]를 사용하여 모든 달력의 모든 이벤트를 단일 호출로 검색하고자합니다. 이것은 실제로 가능합니까? 또한 두 번째 예제가 (적어도 나를 위해) 작동하지 않기 때문에, 모든 이벤트를 검색하는 올바른 방법은 무엇입니까? 좁은 시간 간격으로 여러 번 통화해야합니까? 그렇다면 이벤트를 검색하는 데 가장 큰 시간 간격은 무엇입니까? 미리 감사드립니다.
해결 했습니까? –
아직 해결 했습니까? –