在xcode iOS中将日历添加到日历

Wil*_*rld 14 iphone calendar ios eventkit

海兰

我有这个代码用于向日历添加事件,但它没有添加.

-(void)event
{
    EKEventStore *eventStore = [[EKEventStore alloc] init];

    EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
    event.title     = @"Event";


    NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];
    [tempFormatter setDateFormat:@"dd.MM.yyyy HH:mm"];


    NSString *dateandtime =[NSString stringWithFormat:@"%@%@%@",datestring,@" ",starttimestring];
    NSString *dateandtimeend =[NSString stringWithFormat:@"%@%@%@",datestring,@" ",endtimestring];



    event.startDate = [tempFormatter dateFromString:dateandtime];
    event.endDate = [tempFormatter dateFromString:dateandtimeend];


    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -60.0f * 24]];
    [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]];

    [event setCalendar:[eventStore defaultCalendarForNewEvents]];
    NSError *err;
    [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
}
Run Code Online (Sandbox Code Playgroud)

从XML我得到这种格式的日期和时间:

日期字符串:28.10.2012

starttimestring:15:00

BP.*_*BP. 24

您是iOS 6模拟器还是iOS 6设备?如果是这样,您需要在用户保存项目之前询问用户是否允许使用事件存储.

基本上,如果事件存储对象上有requestAccessToEntityType:completion:选择器,则调用该方法并提供在用户授予权限时执行的代码块,然后您将在该块中执行事件保存.

首先将EventKit框架添加到您的项目中,不要忘记包含导入:

#import <EventKit/EventKit.h>

这是我使用的代码片段,对我有用:

EKEventStore *eventStore = [[EKEventStore alloc] init];
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
    // the selector is available, so we must be on iOS 6 or newer
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if (error)
            {
                // display error message here
            }
            else if (!granted)
            {
                // display access denied error message here
            }
            else
            {
                // access granted
                // ***** do the important stuff here *****
            }
        });
    }];
}
else
{
    // this code runs in iOS 4 or iOS 5
    // ***** do the important stuff here *****
}

[eventStore release];
Run Code Online (Sandbox Code Playgroud)

这是我在这个主题上做过的博客文章:

http://www.dosomethinghere.com/2012/10/08/ios-6-calendar-and-address-book-issues/