如何检查日历中是否已存在该事件。我正在向日历添加一个事件。该事件被添加到特定日期,该日期来自API正确,但它被添加多次。我只需要为日期添加一次事件。
如何解决这些问题?
case 6: {
[APP_SHARE startIndicator];
EKEventStore *store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
if (!granted) { return; }
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = [NSString stringWithFormat:@"Event Name=%@ Date & Time=%@",[arr_response valueForKey:@"post_title"],[arr_response valueForKey:@"time"]];
NSString *myDateString = [arr_response valueForKey:@"time"] ;
// Convert the string to NSDate
NSArray* str_latlon_array = [myDateString componentsSeparatedByString: @","];
NSLog(@"%@",[str_latlon_array objectAtIndex: 0]);
NSString* str=[str_latlon_array objectAtIndex: 0];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd/MM/yyyy";
NSDate *today = [dateFormatter dateFromString:str];
dateFormatter.dateFormat = @"EEEE";
// NSString *dayName = [dateFormatter stringFromDate:today];
event.startDate = [today dateByAddingTimeInterval:60*60]; //today
// NSLog(@"%@",today);
event.endDate = [today dateByAddingTimeInterval:60*60]; //set 1 hour meeting
event.calendar = [store defaultCalendarForNewEvents];
NSError *err = nil;
; [store saveEvent:event span :EKSpanThisEvent commit:YES error:&err];
savedEventId = event.eventIdentifier;
[APP_SHARE stopIndicator];
[AppDelegate defaultAlert:@"Information" message:@"Data Saved in Calender"];
}];
}
答案 0 :(得分:0)
基本上......不要多次添加。您发布的代码部分被多次调用。
要执行此操作,请将savedEventId
保存在应用中的某个位置。这取决于该事件代表什么,您的应用保存了多少事件等等。
如果您的应用只添加了一个活动,则可以使用NSUserDefaults
将savedEventId
存储在特定密钥上(例如@"myEventId"
)。之后您可以检查是否已保存事件(通过NSUserDefaults
核对),以及EventKit
中是否仍存在该事件(如果您始终要重新创建该事件) ,但如果用户删除它,它应该在我看来保持删除)。
或者,如果您的应用向日历添加了多个事件,则必须在唯一键上为应用添加的所有事件存储savedEventId
。您可以在数据库中执行此操作(例如,使用CoreData
)。