在 iOS 上的 iCloud 上添加日历

Posted

技术标签:

【中文标题】在 iOS 上的 iCloud 上添加日历【英文标题】:Add calendar on iCloud on iOS 【发布时间】:2012-11-29 21:01:54 【问题描述】:

我正在尝试将日历添加到 iCloud EKSource,我正在尝试以这种方式查找 iCloud 日历:

EKSource *theSource = nil;
for (EKSource *source in eventStore.sources) 
if (source.sourceType == EKSourceTypeCalDAV && [source.title isEqualToString:@"iCloud"]) 
    theSource = source;
    break;


但没有找到我的任何 EKSource,我如何在 icloud 上添加日历并查看 icloud 中有多少日历?

【问题讨论】:

设备中的操作系统版本是什么?设备中是否配置了 iCloud? 是的 icloud 已配置,我有 ios 6... 您必须请求访问才能访问 iOS6 中的日历,请参阅 official documentation 【参考方案1】:

也许这样的事情会对你有所帮助..

- (void)saveEventToiCloud 

    EKEventStore *eventDB = [[EKEventStore alloc] init];
    NSArray *calender = [[eventDB calendars] retain];

    NSString * typeString = @"";
    EKCalendar *iCloud;
    for (EKCalendar *thisCalendar in calenders) 
    
        EKCalendarType type = thisCalendar.type;
        if (type == EKCalendarTypeCalDAV)
        
                NSString *calName=[NSString stringWithFormat:@"%@", thisCalendar.title];
                NSRange range = [calName rangeOfString:@"iCloud"];  //Couldn't find better way, if there is, then tell me too. :)
                if(range.length!=0)
                
                        //icloud
                        iCloud = thisCalendar;
                        break;
                
                else
                
                        //any other email account     
                
        
    
    if(iCloud)
        NSError *error = nil;
        EKEvent *thisEvent = [[EKEvent eventWithEventStore:eventDB] retain];
        thisEvent.title = @"Title";
        thisEvent.startDate = [NSDate date];
        thisEvent.endDate = [NSDate date]; 
        thisEvent.calendar = iCloud ;
        BOOL saved = [eventDB saveEvent:thisEvent span:EKSpanThisEvent error:&error];
        NSLog(@"Saved calendar event = %@\n", (saved ? @"YES" : @"NO"));
        [thisEvent release];
        thisEvent=nil;
    
    [events release];
    [eventDB release];

【讨论】:

以这种方式给我找到一个 EKCalendarTypeDav 但它不是 iCloud 日历...我不明白为什么找不到它... 您可以尝试使用NSRange range = [calName rangeOfString:@"@"];,那么其他部分将是您的 icloudl。

以上是关于在 iOS 上的 iCloud 上添加日历的主要内容,如果未能解决你的问题,请参考以下文章

创建javascript ICS以添加到ios上的日历

iOS 是不是允许本地日历和 iCloud 共存?

CALDAV 在 icloud 中添加带有注释的事件

来自网络的“添加到日历”的href 不适用于Android 6.0+ 上的本机谷歌日历应用程序

iOS EKEvent Store 在循环中重新创建 iCloud 日历,不会保存本地。

向 Google 日历移动应用添加 ics 提要?