Bha*_*rat 0 objective-c ios ekevent
我已使用此代码将事件添加到iphone日历中
-(void)setEvent:(NSString *)title withStartDate:(NSDate *)startDate withEndDate:(NSDate *)endDate completion:(void (^)(void))completionBlock
{
EKEventStore* store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted)
{
return;
}
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = title;
event.startDate = startDate;
event.endDate = endDate;
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
// NSString *savedEventId = event.eventIdentifier;
NSString* alertTitle;
NSString* msg;
if (err) {
alertTitle = @"Calendar was not set";
msg = @"Please set default calendar in settings.";
}
else
{
alertTitle = @"Event added";
msg = @"Event had been added in your calendar.";
}
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:alertTitle message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
completionBlock();
}];
}
Run Code Online (Sandbox Code Playgroud)
但添加事件是非常缓慢的.我要等待大约10-12秒才能完成这个方法.这是正常的还是我做错了什么?我已经搜索了相同的但仍然没有运气.任何建议将不胜感激.
经过两天的研究,我发现解决方案 - 我把事件保存代码放在dispatch_async这里是我更新的事件添加方法 -
-(void)setEvent:(NSString *)title withStartDate:(NSDate *)startDate withEndDate:(NSDate *)endDate withResecheduling:(BOOL)rescheduling completion:(void (^)(void))completionBlock
{
[[BusyIndicator sharedInstance] startIndicator];
EKEventStore* store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted)
{
return;
}
dispatch_async(dispatch_get_main_queue(), ^{
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = title;
event.startDate = startDate;
event.endDate = endDate;
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
// NSString *savedEventId = event.eventIdentifier;
if (!rescheduling) {
NSString* alertTitle;
NSString* msg;
if (err) {
alertTitle = @"Calendar was not set";
msg = @"Please set default calendar in settings.";
}
else
{
alertTitle = @"Event added";
msg = @"Event has been added in your calendar.";
}
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:alertTitle message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
[[BusyIndicator sharedInstance] stopIndicator];
completionBlock();
});
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |