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