ハイ
カレンダーにイベントを追加するためのこのコードがありますが、追加されません。
-(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];
}
XMLから、次の形式で日付と時刻を取得します。
日付文字列:2012年10月28日
starttimestring:15:00
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];
これは私がこのテーマに関して行ったブログ投稿です:
http://www.dosomethinghere.com/2012/10/08/ios-6-calendar-and-address-book-issues/
1)追加Eventkitフレームワークと#import <EventKit/EventKit.h>
2)
-(void)syncWithCalendar {
EKEventStore *store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = @"Event Title Testing"; //give event title you want
event.startDate = [NSDate date];
event.endDate = [event.startDate dateByAddingTimeInterval:60*60];
event.calendar = [store defaultCalendarForNewEvents];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
}];
}
3)関数を呼び出す
[self syncWithCalendar];