サーチ…


許可の要求

あなたのアプリは、あなたのリマインダーとあなたのカレンダーに無断でアクセスすることはできません。代わりに、ユーザーにアラートを表示して、アプリのイベントへのアクセスを許可するように要求する必要があります。

開始するには、 EventKitフレームワークをインポートしEventKit

迅速

import EventKit

目標-C

#import <EventKit/EventKit.h>

EKEventStore

次に、 EKEventStoreオブジェクトを作成します。これは、カレンダーやリマインダーのデータにアクセスできるオブジェクトです。

迅速

let eventStore = EKEventStore()

目標-C

EKEventStore *eventStore = [[EKEventStore alloc] init];

注意

カレンダーにアクセスする必要があるたびにEKEventStoreオブジェクトを作成するのは効率的ではありません。コードを一度作成して、コード内のどこにでも使用してください。

利用可能かチェックしている

可用性には、「承認済み」、「拒否」、「未決定」の3つのステータスがあります。 Not Determinedは、アプリがアクセスを許可する必要があることを意味します。

可用性をチェックするには、 EKEventStoreオブジェクトのauthorizationStatusForEntityType()メソッドを使用します。

迅速

switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
    case .Authorized: //...
    case .Denied: //...
    case .NotDetermined: //...
    default: break
}

目標-C

switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
    case EKAuthorizationStatus.Authorized:
        //...
        break;
    case EKAuthorizationStatus.Denied:
        //...
        break;
    case EKAuthorizationStatus.NotDetermined:
        //...
        break;
    default:
        break;
}

許可の要求

NotDetermined場合に次のコードを記述しNotDetermined

迅速

eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
    if userGrantedAccess{
        //access calendar
    }
}

さまざまな種類のカレンダーへのアクセス

カレンダーの配列へのアクセス

EKCalendarの配列にアクセスするには、 calendarsForEntityTypeメソッドを使用しcalendarsForEntityType

迅速

let calendarsArray = eventStore.calendarsForEntityType(EKEntityType.Event) as! [EKCalendar]

カレンダーの繰り返し

単純なforループを使用しforください:

迅速

for calendar in calendarsArray{
    //...
}

カレンダーのタイトルと色にアクセスする

迅速

let calendarColor = UIColor(CGColor: calendar.CGColor)
let calendarTitle = calendar.title

目標-C

UIColor *calendarColor = [UIColor initWithCGColor: calendar.CGColor];
NSString *calendarTitle = calendar.title;

イベントの追加

イベントオブジェクトの作成

迅速

var event = EKEvent(eventStore: eventStore)

目標-C

EKEvent *event = [EKEvent initWithEventStore:eventStore];

関連するカレンダー、タイトル、日付の設定

迅速

event.calendar = calendar
event.title = "Event Title"
event.startDate = startDate //assuming startDate is a valid NSDate object
event.endDate = endDate //assuming endDate is a valid NSDate object

カレンダーに予定を追加する

迅速

try {
    do eventStore.saveEvent(event, span: EKSpan.ThisEvent)
} catch let error as NSError {
    //error
}

目標-C

NSError *error;
BOOL *result = [eventStore saveEvent:event span:EKSpanThisEvent error:&error];
if (result == NO){
    //error
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow