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

में ईवेंट नहीं बना सकता मैं डिफ़ॉल्ट आईओएस कैलेंडर में ईवेंट नहीं बना सकता।डिफ़ॉल्ट आईओएस 7 कैलेंडर

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

यहां से शुरू होने से यह किसी भी स्रोत को वापस नहीं कर सका। जब मैं ऐप बना और चलाता हूं तो डिफ़ॉल्ट कैलेंडर तक पहुंच देने के लिए कोई अनुरोध नहीं होता है। (का उपयोग कर

[eventStore defaultCalendarForNewEvents] 
+0

क्या आपको घटनाओं के लिए अनुमति मिल गई है? –

उत्तर

7

मुझे लगता है कि समस्या का EKEventStore तक पहुँचने में वहाँ है,

[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

आपको सिस्टम संस्करण की जांच नहीं करनी चाहिए, लेकिन गीला या विधि उपलब्ध नहीं है: 'अगर ([eventStore प्रतिसाद देता है तो चयनकर्ता: @ चयनकर्ता (अनुरोधअनुवाद एंटीटी टाइप: समापन:)]) {' – rckoenes

+0

@ रेकोनिस: आप सही हैं, धन्यवाद, मैंने अपडेट किया था उत्तर। –

2

मैं पाया है समस्या:

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

मैं मैन्युअल रूप से अनुमति का अनुरोध करना होगा, इसके बिना अनुमति सेट सोचा, मुझे लगता है कि यह आईओएस 7.0.2 के निर्माण में ठीक किया गया था।