Установите конкретную дату события на iCal в EKEvent - PullRequest
0 голосов
/ 07 ноября 2011

Я новичок в Xcode и искал следующие коды для добавления события в ical внутри моего приложения. Но в этом примере показано, как установить начальный и конечный день, используя [[NSDate alloc] init];

Какой код я могу получить, чтобы установить желаемую дату, например. 20-12-2012

Спасибо за ваше время.

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

EKEvent *myEvent  = [EKEvent eventWithEventStore:eventDB];

myEvent.title     = @"New Event";
myEvent.startDate = [[NSDate alloc]init ];

myEvent.endDate   = [[NSDate alloc]init ];
myEvent.allDay = YES;

[myEvent setCalendar:[eventDB defaultCalendarForNewEvents]];

NSError *err;

[eventDB saveEvent:myEvent span:EKSpanThisEvent error:&err]; 


    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Event Created"
                          message:@"Yay!?"
                          delegate:nil
                          cancelButtonTitle:@"Okay"
                          otherButtonTitles:nil];
    [alert show];

1 Ответ

2 голосов
/ 07 ноября 2011

Как вы обнаружили, установка объекта NSDate на нетривиальные даты совершенно нетривиальна.

Есть несколько способов сделать это.

1)

Проверьте документацию для [NSDateFormatter dateFromString:].

2)

Вот еще один способ установить 20 декабря 2012 года.

NSCalendar * gregorian = [NSCalendar currentCalendar];
NSDate *currentDate = [NSDate dateWithTimeIntervalSinceReferenceDate: 0];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear: 11]; // 11 years past the reference date of 1-January-2001
[comps setMonth: 11]; // 11 months past January
[comps setDay:19]; // 19 days past the first day of January
NSDate *eventDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];

NSLog( @"event date is %@", [eventDate description] );
[comps release]; // NSDateComponents was explicitly alloc'd & init'd

myEvent.startDate = eventDate;
mtEvent.endDate = eventDate;
...