2013-10-04 14 views
6
#import <EventKit/EventKit.h> 

デフォルトのiOSカレンダーで予定を作成できません。デフォルトのiOS 7カレンダーで予定を作成できません

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
for (EKSource *source in eventStore.sources) 
{ 
    if (source.sourceType == EKSourceTypeCalDAV || source.sourceType == EKSourceTypeLocal) 
    { 
     NSLog(@"I found it"); 
     break; 
    } 
} 

ここからは、ソースが返されませんでした。私がアプリケーションをビルドして実行すると、デフォルトカレンダーへのアクセスを要求する必要はありません。

すべて私は空の配列を取得すべてで:に、私はEKEventStoreへのアクセスに問題があると思い

[eventStore defaultCalendarForNewEvents] 
+0

あなたはイベントの許可を得ていますか? –

答えて

7

を使用して(私は新しいカレンダーを作成せずにイベントを追加しようとした場合でも

[eventStore.sources count] 

を確認のアクセス許可を以下に試してください。

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]){  
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
     { 
      NSLog(@"GRANTED: %c", granted); 
      for (EKSource *source in eventStore.sources) 
      { 
       if (source.sourceType == EKSourceTypeCalDAV || source.sourceType == EKSourceTypeLocal) 
       { 
        NSLog(@"I found it"); 
        break; 
       } 
      } 
     }]; 

} 

希望はそれを助けます..

+1

システムのバージョンをチェックするべきではありませんが、メソッドが利用可能であるかどうかはわかりません: 'if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]){' – rckoenes

+0

@rckoenes:ありがとう、私は更新しました答え。 –

2

私が発見した問題:私は手動で許可を要求しなければならない

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
    // TODO 
}]; 

は、私はそれはiOSの7.0.2のビルドで修正されていたと思うが、それなしでアクセス許可セットを考えました。

関連する問題