2013-01-31 17 views
2

我想用我的日曆日期像下面添加事件:如何在NSCalender中設置事件?

- (void)viewDidLoad { 


[super viewDidLoad]; 
self.navigationItem.title = @"Calendar"; 

EKEventStore *eventStore = [[EKEventStore alloc]init]; 
EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
event.title = @"Training"; 
event.startDate = [[NSDate alloc]init]; 
event.endDate = [[NSDate alloc]initWithTimeInterval:600 sinceDate:event.startDate]; 
//set the default calendar type 
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

// set today 
today = [[NSDate alloc] initWithTimeIntervalSinceNow:1]; 

//set the current day to show the calendar 
NSDateComponents *components = [calendar components:units fromDate:[NSDate date]]; 
[components setDay:1]; 
self.currentDate = [calendar dateFromComponents:components]; 



[event setCalendar:[eventStore defaultCalendarForNewEvents]]; 
//[event setCalendar:<#(EKCalendar *)#>] 
NSError *err; 
[eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
[self fillCalendar]; 
} 

但不能添加的培訓活動中它。我想,我需要用我的我的[self fillCalender]。但是,以取代「defaultCalenderForNewEvents」 ,這是行不通的。請您建議?謝謝。

它創建活動
+0

提供反饋意見做了我們的代碼,幫助你或不? – Stas

+0

我在努力......沒有代碼爲我工作......我一定會更新這個。 – bapi

+0

你有什麼錯誤或什麼? – Stas

回答

0

開始日期不分配...

EKEventStore *eventStore = [[EKEventStore alloc] init]; 

EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
event.title  = @"My Event Name"; 

event.startDate =[NSDate date]; 
event.endDate = [[NSDate alloc] initWithTimeInterval:60 sinceDate:event.startDate]; 

[event setCalendar:[eventStore defaultCalendarForNewEvents]]; 
NSError *err; 
[eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
+0

您在代碼和Q代碼中看到的有什麼不同?解釋在哪裏? – Stas

+0

在這裏,您正在調用「defaultCalenderForNewEvents」,它不適合我... Instade,我需要用事件調用「fillCalender」,這是我的自定義方法。 – bapi

0

在我的代碼我做folliwing:

NSDate * startDate = [self.complexDatePicker date]; 
EKEventStore *store = [[EKEventStore alloc] init]; 
EKEvent * event = [EKEvent eventWithEventStore:store]; 
EKCalendar * defCalendar = [store defaultCalendarForNewEvents]; 
[event setCalendar:defCalendar]; 
event.startDate = startDate; 
event.endDate = [NSDate dateWithTimeInterval:3600 sinceDate:[NSDate date]]; 
event.title = @"SeeksPack Exercises"; 
//Temporary hardcoded day values, user will be able to select exact days 
EKRecurrenceDayOfWeek * day2 = [[EKRecurrenceDayOfWeek alloc] initWithDayOfTheWeek:3 weekNumber:0]; 
EKRecurrenceDayOfWeek * day4 = [[EKRecurrenceDayOfWeek alloc] initWithDayOfTheWeek:5 weekNumber:0]; 
EKRecurrenceDayOfWeek * day6 = [[EKRecurrenceDayOfWeek alloc] initWithDayOfTheWeek:7 weekNumber:0]; 
EKRecurrenceRule * rule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily interval:1 daysOfTheWeek:[NSArray arrayWithObjects:day2, day4, day6, nil] daysOfTheMonth:nil monthsOfTheYear:nil weeksOfTheYear:nil daysOfTheYear:nil setPositions:nil end:[EKRecurrenceEnd recurrenceEndWithOccurrenceCount:25]]; 

event.recurrenceRules = [NSArray arrayWithObject:rule]; 
NSError * er; 
[store saveEvent:event span:EKSpanFutureEvents commit:YES error:&er]; 
//The identifier should actually be stored in app bundle in order to get and modify already created events 
NSString * identif = event.eventIdentifier; 

看看這實際上節省了它是事件的方法:

- (BOOL)saveEvent:(EKEvent *)event span:(EKSpan)span commit:(BOOL)commit error:(NSError **)error

而作爲蘋果醫生說:

Save and delete events from the event store with the saveEvent:span:commit:error: and removeEvent:span:commit:error: methods.

所以試圖改變儲蓄方法可能是這個幫助你

0

希望下面的代碼可以幫助你

EKEventStore *eventStore = [[[EKEventStore alloc] init] autorelease]; 



EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 

EKReminder *reminder = [EKReminder reminderWithEventStore:eventStore]; 



event.title = @"Test Event"; 

reminder.title = @"Test reminder"; 



NSDate *cDate = [NSDate date]; 

NSLog(@"current date %@", cDate); 



/*NSDateComponents *startDateComponents = [[[NSDateComponents alloc] init] autorelease]; 

[startDateComponents setDay:12]; 

[startDateComponents setMonth:12]; 

[startDateComponents setYear:2012]; 

[startDateComponents setHour:12]; 

[startDateComponents setMinute:18]; 



NSDateComponents *endDateComponents = [[[NSDateComponents alloc] init] autorelease]; 

[endDateComponents setDay:12]; 

[endDateComponents setMonth:12]; 

[endDateComponents setYear:2012]; 

[endDateComponents setHour:12]; 

[endDateComponents setMinute:18]; 

[endDateComponents setSecond:20];*/ 



//event.startDate = cDate; 

//event.endDate = [cDate dateByAddingTimeInterval:15.0]; 



event.startDate = [cDate dateByAddingTimeInterval:((5*60*60) + (30 * 60) + 15)]; 

event.endDate = [cDate dateByAddingTimeInterval:((5*60*60) + (30 * 60) + 30)]; 



//event.startDate = [[NSCalendar currentCalendar] dateFromComponents:startDateComponents]; 

//event.endDate = [[NSCalendar currentCalendar] dateFromComponents:endDateComponents]; 



reminder.completionDate = [cDate dateByAddingTimeInterval:((5*60*60) + (30 * 60) + 10)]; 



NSLog(@"startdate %@", event.startDate); 

NSLog(@"enddate %@", event.endDate); 





[event setCalendar:[eventStore defaultCalendarForNewEvents]]; 

//[reminder setCalendar:[eventStore defaultCalendarForNewReminders]]; 



NSError *error = nil; 

[eventStore saveEvent:event span:EKSpanThisEvent commit:YES error:&error]; 

//[eventStore saveReminder:reminder commit:YES error:&error]; 
相關問題