1

ユーザーが EKEvent を完了としてマークできるようにするにはどうすればよいですか? 現在、日付のイベントを取得し、UITableView に表示しています。

// Fetching events happening in the next 24 hours with a predicate, limiting to the default calendar
- (NSArray *)fetchEventsForDate:(NSDate*)startDate
{
    [self.eventsList removeAllObjects];
    // endDate is 1 day = 60*60*24 seconds = 86400 seconds from startDate
    NSDate *endDate = [startDate dateByAddingTimeInterval:86400];


    NSMutableDictionary *eventsDict = [NSMutableDictionary dictionaryWithCapacity:1024];
    NSDate* currentStart = [NSDate dateWithTimeInterval:0 sinceDate:startDate];

//    int seconds_in_year = 60*60*24*365;
    int seconds_in_day = 60*60*24;


    // enumerate events by one year segment because iOS do not support predicate longer than 4 year !
    //while ([currentStart compare:endDate] == NSOrderedAscending) {

        NSDate* currentFinish = [NSDate dateWithTimeInterval:seconds_in_day sinceDate:currentStart];

        if ([currentFinish compare:endDate] == NSOrderedDescending) {
            currentFinish = [NSDate dateWithTimeInterval:0 sinceDate:endDate];
        }
        NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:currentStart endDate:currentFinish calendars:nil];
        [eventStore enumerateEventsMatchingPredicate:predicate
                                          usingBlock:^(EKEvent *event, BOOL *stop) {
                                              if (event) {
                                                  [eventsDict setObject:event forKey:event.eventIdentifier];
                                              }
                                          }];       

    NSArray *events = [eventsDict allValues];

    return events;
}

ユーザーがイベントセルをタップして完了としてマークするようにします。

その EKEvent を更新して保存し、将来的に完全なイベントとして表示するには、何を変更できますか (任意のタグまたはブール)?

[self.eventStore saveEvent: myUpatedEvent span:EKSpanThisEvent error:&error];

探検しました

event.status, event.refresh, event.organizer, event.availability, etc.

しかし、どれも役に立ちませんでした。

としてみEKEventAvailabilityました

  [event setAvailability:EKEventAvailabilityUnavailable];
        NSError *error = nil;
        NSLog(@"Event Availbility:%d",event.availability); // It always returned -1;
        [self.eventStore saveEvent:event span:EKSpanThisEvent error:&error];
        if (error) {
            NSLog(@"Save Event errorDiscription:%@",error.description);
        }

しかし、更新して-1()を返して更新していませんでしたEKEventAvailabilityNotSupported

提案してください!!

ありがとう!

4

1 に答える 1

0

availabilityタップしたイベントの を として変更できますEKEventAvailabilityUnavailable。イベントが完了した場合、論理的には利用できませんね。

But if the event’s calendar does not support availability settings,
this property’s value is `EKEventAvailabilityNotSupported.`

編集:代わりに、 EKEvent のプロパティを
使用できます。eventIdentifier

これは、イベントの一意の識別子です。(読み取り専用)ユーザーがイベントをタップしたときにローカルまたは CoreData に保存し、将来の目的に使用できます。

于 2013-07-23T07:46:20.553 に答える