アプリケーションを使ってiPhone用の新しいカレンダーを作成できるかどうか知りたいです。アプリでイベントを設定できることは知っていますが、アプリから別のカレンダーを作成して、すべてのイベントを配置することもできます。
編集:
最善の回避策が不可能な場合は、カレンダーとイベントストアを作成し、その情報をnscodingで保存しますか?その後、取得しますか?
既存のカレンダーと統合するために新しいカレンダーを作成する可能性がある場合、それが私がやりたいことです。
アプリケーションを使ってiPhone用の新しいカレンダーを作成できるかどうか知りたいです。アプリでイベントを設定できることは知っていますが、アプリから別のカレンダーを作成して、すべてのイベントを配置することもできます。
編集:
最善の回避策が不可能な場合は、カレンダーとイベントストアを作成し、その情報をnscodingで保存しますか?その後、取得しますか?
既存のカレンダーと統合するために新しいカレンダーを作成する可能性がある場合、それが私がやりたいことです。
これは私がこれを行った方法です:
-(NSString*)createCal:(NSString*)myCalId;{
// Instantiate eventstore object
EKEventStore *store = [[EKEventStore alloc] init];
EKSource *localSource = nil;
for (EKSource *source in store.sources)
if (source.sourceType == EKSourceTypeLocal){
localSource = source;
break;
}
//this is you creating your calendar
EKCalendar *cal;
cal = [EKCalendar calendarWithEventStore:store];
cal.title = @"Name of calendar";
cal.source = localSource;
[store saveCalendar:cal commit:YES error:nil];
NSLog(@"cal id = %@", cal.calendarIdentifier);
return cal.calendarIdentifier;}
これは強力なので、インポートする必要があり<EventKit/EventKit.h>
ます。たとえば、カレンダーが既に存在する場合など、注意して多くの検証を行う必要があります。お役に立てれば。
EventKitのドキュメントを見ると、プログラムで新しいカレンダーを作成することはできないようです。ただし、既存のカレンダーのリストを取得して、既定のカレンダーを見つけることができます。
お役に立てれば。
標準の init-Method はもう使用できません。それは非推奨です。ここで EKEventStore Class Reference からの引用:
「iOS 5 以降では、デフォルトの init メソッドを使用してイベント ストア オブジェクトを初期化します。iOS 6 以降では、イベント ストアが requestAccessToEntityType:completion: で初期化された後で、データを返すためにエンティティ タイプへのアクセスを要求する必要があります。
OS X では、デフォルトの init メソッドの代わりに initWithAccessToEntityTypes: を使用します。受け入れ可能なエンティティ タイプは、イベント用の EKEntityMaskEvent とリマインダー用の EKEntityMaskReminder です。"
したがって、iOS6 を使用している場合は、次のようになります。
EKEventStore *store = [[EKEventStore alloc] initWithAccessToEntityTypes:completion:];
と
cal = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:store];
MacOSX アプリに必要です。だから私はこれを使用する必要があります:
したがって、私の場合(MacOSX)はこのソリューションです。これは Sparqs コードです。標準の init の代わりに新しい init で変更するだけです。
-(NSString*)createCal:(NSString*)myCalId;{ // Instantiate eventstore object EKEventStore *store = [[EKEventStore alloc] initWithAccessToEntityTypes:EKEntityMaskEvent]; EKSource *localSource = nil; for (EKSource *source in store.sources) if (source.sourceType == EKSourceTypeLocal){ localSource = source; break; } //this is you creating your calendar EKCalendar *cal; cal = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:store]; cal.title = @"Name of calendar"; cal.source = localSource; [store saveCalendar:cal commit:YES error:nil]; NSLog(@"cal id = %@", cal.calendarIdentifier); return cal.calendarIdentifier;}