gpt4 book ai didi

ios - Ekevents 在日历中多次添加?

转载 作者:行者123 更新时间:2023-11-29 11:57:29 26 4
gpt4 key购买 nike

在我的应用程序中,我正在向设备日历添加一个事件。我正在这样做

if ([db.saveCalenderSettings isEqualToNumber:[NSNumber numberWithBool:YES]]){

NSPredicate *predicateForEventOnDate = [store predicateForEventsWithStartDate:strtdate endDate:[strtdate dateByAddingTimeInterval:60*60] calendars:nil];
NSArray *eventsOnDate = [store eventsMatchingPredicate:predicateForEventOnDate];

__block BOOL eventExists = NO;

[eventsOnDate enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

EKEvent *eventToCheck = (EKEvent*)obj;

if([note isEqualToString:eventToCheck.notes]) {
eventExists = YES;
*stop = YES;
}
}];
NSLog(@"%@",eventsOnDate);
if(! eventExists) {
NSLog(@"Event not exists so adding");

EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = subject; //give event title you want
event.notes = note ;
event.startDate = strtdate;
event.endDate = [event.startDate dateByAddingTimeInterval:60*60];
event.calendar = [store defaultCalendarForNewEvents];
// EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60*15*-1];
// event.alarms = [NSArray arrayWithObject:alarm];

NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];

if (!err) {

[db setSavedtocalender:@"yes"];

}
else {
// NSLog(@" Event not created");
[db setSavedtocalender:@"no"];

}
}
else {
NSLog(@"Event exists");
[db setSavedtocalender:@"yes"];
}
}

但问题是同一事件在默认日历中被多次添加。有人能告诉我哪里出错了吗?

最佳答案

您好,每个事件都会分配一个 ID。请检查是否添加了事件。如果添加了事件,则存储事件 ID 并在再次保存事件之前再次检查。

获取事件 ID:

//save the event id if you want to access this later
NSString *eventId=event.eventIdentifier;

供将来引用:

// To add event in Calender App

EKEventStore *store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = @"To meet Chandu.";
event.startDate = [NSDate date]; //today
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; //set 1 hour meeting
event.calendar = [store defaultCalendarForNewEvents];
event.location=@"Sandriver Technologies";
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
NSLog(@"%@",event.eventIdentifier); //save the event id if you want to access this later
eventId=event.eventIdentifier;
}];



//to remove event from app

[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
EKEvent* eventToRemove = [store eventWithIdentifier:eventId];
if (eventToRemove) {
NSError* error = nil;
[store removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&error];
}
}];



// Note: Get all event list

//To get Appropriate calender
NSCalendar *calendar = [NSCalendar currentCalendar];


if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
/* iOS Settings > Privacy > Calendars > MY APP > ENABLE | DISABLE */
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
if ( granted )
{
NSLog(@"User has granted permission!");
// Create the start date components
NSDateComponents *oneDayAgoComponents = [[NSDateComponents alloc] init];
oneDayAgoComponents.day = -1;
NSDate *oneDayAgo = [calendar dateByAddingComponents:oneDayAgoComponents
toDate:[NSDate date]
options:0];

// Create the end date components
NSDateComponents *oneYearFromNowComponents = [[NSDateComponents alloc] init];
oneYearFromNowComponents.year = 1;
NSDate *oneYearFromNow = [calendar dateByAddingComponents:oneYearFromNowComponents
toDate:[NSDate date]
options:0];

// Create the predicate from the event store's instance method
NSPredicate *predicate = [store predicateForEventsWithStartDate:oneDayAgo
endDate:oneYearFromNow
calendars:nil];

// Fetch all events that match the predicate
NSArray *events = [store eventsMatchingPredicate:predicate];
NSLog(@"The content of array is%@",events);
}
else
{
NSLog(@"User has not granted permission!");
}
}];
}

关于ios - Ekevents 在日历中多次添加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com