gpt4 book ai didi

iphone - 如何以编程方式在默认日历中创建 iCal 事件?

转载 作者:太空狗 更新时间:2023-10-30 03:12:01 24 4
gpt4 key购买 nike

如何使用 Objective-C 以编程方式在默认日历中创建 iCal 事件?我想检查事件是否已经存在并相应地设置按钮状态。

最佳答案

如何使用 Objective-C 在默认日历中以编程方式创建 iCAL 事件的示例。代码检查事件是否已经存在,并相应地设置按钮状态。这是@ codeburger 的代码:

-(void)initCalendar {

// An array of 1 dictionary object, containing START and END values.
NSMutableArray* pvDict = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:PV_URL ]];

// Check if the private view event already exists in the default calendar.
// Then set the calendar button state.

// Get a entry point to the Calendar database.
self.store = [[EKEventStore alloc ] init ];

// Get an array of all the calendars.
NSArray *calendars = store.calendars;

// Get the default calendar, set by the user in preferences.
EKCalendar *defaultCal = store.defaultCalendarForNewEvents;

// Find out if this calendar is modifiable.
BOOL isDefaultCalModifiable = defaultCal.allowsContentModifications ;

// Create an event in the default calendar.

self.event = [ EKEvent eventWithEventStore:store ];

self.event.title = CHELSEA_SPACE ;
self.event.location = CHELSEA_ADDRESS ;

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyy-MM-dd HH:mm:ss.S"];

NSString *startString = [[ pvDict objectAtIndex:0] objectForKey:@"starts" ];
NSDate *dateStart = [dateFormatter dateFromString:startString];

NSString *endString = [[ pvDict objectAtIndex:0] objectForKey:@"ends" ];
NSDate *dateEnd = [dateFormatter dateFromString:endString];

self.event.startDate = dateStart;
self.event.endDate = dateEnd;

self.event.calendar = defaultCal ;

// Alternative code to add 2.5 hours to start time.
// [[NSDate alloc] initWithTimeInterval:9000 sinceDate:event.startDate];

// Search for events which match this date/time start and end.
// Compare the matched events by event TITLE.

NSPredicate *predicate = [store predicateForEventsWithStartDate:event.startDate
endDate:event.endDate calendars:calendars];

NSArray *matchingEvents = [store eventsMatchingPredicate:predicate];

self.calendarButton.enabled = NO;

if( ! isDefaultCalModifiable ) {
// The default calendar is not modifiable
return ;
}

if ( [ matchingEvents count ] > 0 ) {

// There are already event(s) which match this date/time start and end.
// Check if this event is the PV

EKEvent *anEvent;
int j;

for ( j=0; j < [ matchingEvents count]; j++) {

anEvent = [ matchingEvents objectAtIndex:j ] ;
if([ CHELSEA_SPACE isEqualToString: anEvent.title ]) {
// PV event already exists in calendar.
return;
}
}
[ anEvent release ];
}

self.calendarButton.enabled = YES;

[ pvDict release ];
}

-(void)addEventToCalendar:(id)sender {

NSError *error;
BOOL saved = [self.store saveEvent:self.event span:EKSpanThisEvent error:&error];

NSLog(@"Saved calendar event = %@\n", (saved ? @"YES" : @"NO"));
self.calendarButton.enabled = NO;

}

我看到这个问题没有答案,觉得应该对其进行编辑,完全归功于@ codeburger .

关于iphone - 如何以编程方式在默认日历中创建 iCal 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com