簡體   English   中英

如何在iPhone日歷上創建提醒和存儲提醒

[英]How to create a reminder and store reminder on iPhone Calender

我是編程新手,我制作了一個提醒應用程序,將事件保存在iCal上,現在我想通過項目中的編碼刪除該事件,我在iCal中創建事件的代碼如下:

-(void) setReminderInPhone {
NSString *dateWithTime = [NSString stringWithFormat:@"%@ %@",calenderDtl.dateInString,calenderDtl.openTimeUTC];
NSString *mrktName = mrktDtl.marketName;
//dateWithTime = @"2016-04-02 04:10 am";

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd hh:mm a";
[fmt setAMSymbol:@"am"];
[fmt setPMSymbol:@"pm"];
fmt.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSDate *utc = [fmt dateFromString:dateWithTime];

fmt.dateFormat = @"yyyy-MM-dd hh:mm a";
fmt.timeZone = [NSTimeZone systemTimeZone];
NSString *local = [fmt stringFromDate:utc];
NSDate *localDate = [fmt dateFromString:local];
EKEventStore *store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    if (!granted) { return; }
    EKEvent *event = [EKEvent eventWithEventStore:store];
    event.title = mrktName;
    event.startDate = localDate; //test
    event.endDate = [event.startDate dateByAddingTimeInterval:60*2];
    event.calendar = [store defaultCalendarForNewEvents];
    NSError *err = nil;
    [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
}];
}

嘗試執行以下操作從日歷中刪除事件。

EKEvent *eventToRemove = [eventStore eventWithIdentifier:eventIdentifier];

if (eventToRemove)
{
    NSError* error = nil;

    [eventStore removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&error];
}

在iCalendar中創建事件時,您將獲得eventIdentifier的值,如下所示:

//Adding Events to default iOS calendar for Making Reminders
-(NSString *)addEventToCalendar: (NSString *)title withDate:(NSString *)date{

EKEvent *event = [EKEvent eventWithEventStore:eventStore];

event.title = [NSString stringWithFormat:@"Pregnancy Workout Advisor - Event: %@",title];

event.startDate = [dateFormatter dateFromString:date];

event.endDate = [event.startDate dateByAddingTimeInterval:60*60];  //set 1 hour meeting

event.allDay = YES;

[dateFormatter setDateFormat:@"YYYY-MM-dd"];

EKAlarm *alarm = [EKAlarm alarmWithAbsoluteDate:[NSDate dateWithTimeInterval:9*60*60 sinceDate:[dateFormatter dateFromString:date]]];

[event addAlarm:alarm];

event.calendar = [eventStore defaultCalendarForNewEvents];

NSError *err = nil;

[eventStore saveEvent:event span:EKSpanThisEvent commit:YES error:&err];

return event.eventIdentifier;  }

在上述方法中,您將為要添加到日歷的每個事件獲得一個eventIdentifier。 將eventIdentifier存儲到CoreData / Sqlite中。

這樣,當您需要刪除該事件時,只需提供該eventIdentifier。 這肯定會從日歷中刪除。

希望能幫助到你...

試試這個代碼,它對我有用,

EKEventStore *store = [[EKEventStore alloc] init];

            [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
                if (!granted) return;
                EKEvent* eventToRemove = [store eventWithIdentifier:[eventIdendifier objectAtIndex:indexPath.row]];
                if (eventToRemove) {
                    [eventToRemove setCalendar:[store defaultCalendarForNewEvents]];

                    NSError* err = nil;

                    [store removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&err];

                    dispatch_async(dispatch_get_main_queue(), ^{

                        [eventIdendifier removeObjectAtIndex:indexPath.row];

                    });
                }
            }];

我給了eventIdentifier值,它的NSMutableArray值。 首先,您將事件添加到事件存儲中,讓每個事件獲得每個事件標識符值,事件自動保存到eventIdentifier並在下面獲取標識符值方法,

EKEventStore *store = [EKEventStore new];

    if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)])
    {
        /* iOS Settings > Privacy > Calendars > MY APP > ENABLE | DISABLE */
        [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
         {
             if ( granted )
             {
                 NSPredicate *predicate = [store predicateForEventsWithStartDate:date1 endDate:[date1 dateByAddingTimeInterval:23.96 * 60.0 * 60.0] calendars:nil];
                 NSMutableArray *eventsVal = (NSMutableArray *)[store eventsMatchingPredicate:predicate];

                 for (int i = 0; i<eventsVal.count; i++) {
                     [eventIdendifier addObject:[[eventsVal objectAtIndex:i] eventIdentifier]];
                 }

             }
         }];

    }

其謂詞從開始日期到結束日期檢查,然后獲取所有特定日期的事件,並且如果該值有助於顯示事件值,刪除事件等,還從eventIdentifier值添加對象

希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM