EKEvent не сохраняет напоминание в календаре ios

Я пытаюсь сохранить напоминание в календаре. Он был сохранен, но с неправильной датой и временем.

РЕДАКТИРОВАТЬ В основном я хочу сохранить напоминание в календаре с датой начала, выбранной из средства выбора startDate, и датой окончания, выбранной из средства выбора endDate. и время, выбранное из средства выбора напоминания. Любая дата и время.

Ниже мой код. Что я делаю неправильно здесь

EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
event.title = productTextField.text;

   [event setCalendar:[eventStore defaultCalendarForNewEvents]];

NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];//This is working

NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[reminderTime getDate]];

NSInteger hour = [components hour];
NSInteger minute = [components minute];
NSDate *reminderDateAndTime = [NSDate dateWithTimeIntervalSince1970: [[startDate getDate] timeIntervalSince1970] + (minute * 60) + (hour * 60 * 60)];
 NSDate *endDateAndTime = [NSDate dateWithTimeIntervalSince1970: [[endDate getDate] timeIntervalSince1970] ];
 event.startDate = reminderDateAndTime;

event.endDate   = endDateAndTime;

    [eventStore saveEvent:event span:EKSpanThisEvent error:&err];

person Mann    schedule 29.10.2012    source источник
comment
Это может помочь, если вы скажете, что вы получаете и что вы ожидаете получить.   -  person Abizern    schedule 30.10.2012
comment
Похоже, вам нужен форматировщик даты, но, пожалуйста, сообщите нам о желаемом результате.   -  person Charan    schedule 30.10.2012


Ответы (2)


В основном я хочу сохранить напоминание в календаре с датой начала, выбранной из средства выбора startDate, и датой окончания, выбранной из средства выбора endDate. и время, выбранное из средства выбора напоминания. Любая дата и время.

Вам также не нужны 2 или 3 сборщика, вы можете использовать только один сборщик для всей этой операции.

Кажется, что распределение занимает много времени, когда вы используете 3 средства выбора, одно для даты начала, одно для даты окончания и другое для времени, и этот пользовательский интерфейс также выглядит прикольно.

Тогда почему вы используете dateWithTimeIntervalSince1970: . Он возвращает объект NSDate, установленный на заданное количество секунд с первого момента 1 января 1970 года по Гринвичу. Вам это не нужно.

Просто возьмите BOOL, например: BOOL dateValue

если dateValue истинно, получите дату начала, а если ложно, получите дату окончания.

Просто получите первую выбранную дату, например:

NSDate *startDate = [datePicker date];

Примечание. После выбора даты начала установите минимальную дату средства выбора в качестве первой выбранной даты начала.

Затем пользователь не может выбрать дату окончания до даты начала.

person Charan    schedule 30.10.2012
comment
Спасибо за ответ, но я также хочу добавить время. И дата окончания также напоминания - person Mann; 30.10.2012
comment
Затем отформатируйте дату вместе со временем. Средство выбора даты также предоставляет время вместе с датой, днем ​​​​и годом. вы можете проверить это -› unicode.org/reports/tr35/#Date_Format_Patterns - person Charan; 30.10.2012
comment
Но как он будет реагировать на разные места? - person Mann; 30.10.2012
comment
что вы имеете в виду под разными местами? - person Charan; 30.10.2012
comment
Если пользователь приложения находится в Суди-Арабе, а не в Англии, то? - person Mann; 30.10.2012
comment
Однако это не имеет никакого смысла, средство выбора даты получает дату в соответствии со временем, установленным на устройстве, средство выбора даты не знает, где пользователь iPhone использует iPhone. - person Charan; 30.10.2012
comment
давайте продолжим это обсуждение в чате - person Charan; 30.10.2012

Я понял, что я делаю неправильно. Код ниже работает нормально (код размещения здесь для других пользователей)

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];


// Break the date up into components
NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit )
                                               fromDate:[startDate getDate]];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
                                               fromDate:[reminderTime getDate]];

NSDateComponents *dateComponentsEnd = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit )
                                               fromDate:[endDate getDate]];

 [event setCalendar:[eventStore defaultCalendarForNewEvents]];

// Set up the fire time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
// Notification will fire in one minute
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *startDatee = [calendar dateFromComponents:dateComps];
NSDateComponents *dateCompsEnd = [[NSDateComponents alloc] init];
[dateCompsEnd setDay:[dateComponentsEnd day]];
[dateCompsEnd setMonth:[dateComponentsEnd month]];
[dateCompsEnd setYear:[dateComponentsEnd year]];
NSDate *endDatee = [calendar dateFromComponents:dateCompsEnd];
event.startDate=startDatee;
event.endDate=endDatee;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
person Mann    schedule 30.10.2012
comment
Привет, ман, у меня вопрос. Какая у вас дата начала, время напоминания и дата окончания? И event.startDate и event.endDate являются относительными датами? не абсолютная дата? Спасибо! - person EVA; 07.11.2012
comment
startDate, endDate и напоминаниеTime являются сборщиками. и о том, что event.startDate и event.endDate являются относительными или абсолютными, я не понимаю, что вы говорите, я боюсь. Это сохранит дату в unixtimestamp - person Mann; 07.11.2012
comment
Спасибо, ман. Моя проблема в том, что когда я сохраняю напоминание, в нем говорится о недопустимых компонентах даты. У вас есть какие-нибудь подсказки? Еще раз спасибо. - person EVA; 08.11.2012
comment
Не знаю, приятель. Хотел бы я помочь тебе здесь. Но на самом деле не знаю - person Mann; 08.11.2012