0

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にあるカレンダーの数を確認するにはどうすればよいですか?

4

1 に答える 1

0

おそらく、このようなものがあなたを助けるでしょう..

- (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];
}
于 2012-11-30T10:19:57.890 に答える