2015-03-18 7 views
10

Sono stato creato un evento di calendario con allarme 5 minuti prima dell'evento.Calendario L'evento si aggiunge più volte durante la creazione di eventi in IOS

mio evento si presenta così

EKEvent <0x7fd8ae554ba0> 
{ 
    EKEvent <0x7fd8ae554ba0> 
{ title =  E-Cold 
1mg; 
    location =  ; 
    calendar =  EKCalendar <0x7fd8ae717420> {title = Medicines; type = Local; allowsModify = YES; color = #1badf8;}; 
    alarms =  (
    "EKAlarm <0x7fd8ae71bd30> {triggerInterval = -300.000000}" 
); 
    URL =   (null); 
    lastModified = 2015-03-18 09:01:41 +0000; 
    startTimeZone = Asia/Kolkata (GMT+5:30) offset 19800; 
    startTimeZone = Asia/Kolkata (GMT+5:30) offset 19800 
}; 
    location =  ; 
    structuredLocation = (null); 
    startDate = 2015-03-18 02:30:00 +0000; 
    endDate =  2015-04-01 02:30:00 +0000; 
    allDay =  0; 
    floating =  0; 
    recurrence = EKRecurrenceRule <0x7fd8ae720c40> RRULE FREQ=DAILY;INTERVAL=1;UNTIL=20150401T023000Z; 
    attendees = (null); 
    travelTime = (null); 
    startLocation = (null); 
}; 

Qui di seguito è il mio codice

EKEvent *event4 = [EKEvent eventWithEventStore:self.eventStore];    event4.title = @“E-Cold 1mg”; 
event4.startDate = pickerDate.date;     
event4.endDate = fourthEndcombDate; 
EKRecurrenceEnd *endRecurrence = [EKRecurrenceEnd recurrenceEndWithEndDate:fourthEndcombDate]; 
EKRecurrenceRule *rule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily interval:1 end:endRecurrence]; 
[event4 addRecurrenceRule:rule]; 
event4.notes = @“Cure for Cold & Infection”; 
EKAlarm *alaram4 = [EKAlarm alarmWithRelativeOffset:aInterval]; 
[event4 addAlarm:alaram4]; 
[event4 setCalendar:self.defaultCalendar]; 
if (event4.availability != EKEventAvailabilityNotSupported) { 
    event4.availability = EKEventAvailabilityFree; 
} 
NSError *err4 = nil; 
[self.eventStore saveEvent:event4 span:EKSpanThisEvent commit:YES error:&err4]; 

Quando aggiungo evento con 08:00 come sopra, allora è aggiunta dalla data di inizio fino ad oggi concluderà con 12AM più volte lungo con l'evento corretto .. Come mostrato nelle immagini.

Image with Event Time and Event with 12AM

Multiple events are adding along with correct event with 12AM

E 'DEFAULT comportamento o ho bisogno di modificare nulla durante la creazione dell'evento.

comportamento previsto: evento deve essere aggiunto una volta da un capo dall'inizio alla data di fine con solo 8:00 ...

Si prega di dare suggerimenti o idee per risolvere questo problema ..!

Grazie ..!

+0

whre è il tuo codice creato per questa roba. .? sei immagini attetate con questa domanda ma codice reale La cosa principale è il codice creato per aggiungere un evento nel calendario. Probabilmente penso che sia aggiungere codice evento in Loop e che sia stato aggiunto più volte. –

+0

Ho modificato la mia domanda e ho aggiunto il codice per riferimento. Non sto usando alcun loop ... – Vidhyanand

+0

Hai impostato un evento di due settimane da ripetere ogni giorno. Perché dovresti farlo? – rmaddy

risposta

2

Prova il codice seguente per creare un evento da data di inizio a data di fine e basta rimuovere la regola di ricorrenza mentre sta rendendo il tuo evento recuuring.

EKEvent *event4 = [EKEvent eventWithEventStore:self.eventStore]; 
event4.title = @“E-Cold 1mg”; 
event4.startDate = pickerDate.date;     
event4.endDate = fourthEndcombDate; 
event4.notes = @“Cure for Cold & Infection”; 
EKAlarm *alaram4 = [EKAlarm alarmWithRelativeOffset:aInterval]; 
[event4 addAlarm:alaram4]; 
[event4 setCalendar:self.defaultCalendar]; 
if (event4.availability != EKEventAvailabilityNotSupported) { 
    event4.availability = EKEventAvailabilityFree; 
} 
NSError *err4 = nil; 
[self.eventStore saveEvent:event4 span:EKSpanThisEvent commit:YES error:&err4]; 
+0

Se rimuovo recurrenceRule allora funziona come previsto ... ma con la regola delle ricorrenze questo problema sta arrivando ....! Come da mio requisito il mio evento dovrebbe persistere da startDate a EndDate ..! – Vidhyanand

+0

Se rimuovo la ricorrenza, l'evento si aggiunge con 12AM tra la data di inizio e la data di fine.! Si deve aggiungere con 8AM non 12 AM .. Significa che la 18Mar è aggiunta con 8AM dopo quella di 19Mar - 1 Apr è aggiunta con 12AM .. (In questo caso i duplicati vengono rimossi ma l'orario dell'evento si sta comportando male) – Vidhyanand

+0

hai provato a creare un evento con le tue esigenze nel calendario predefinito? esso ti genererà continuamente con l'evento anche per il secondo giorno. –

1

Provare a cambiare l'ultima riga del codice a questo:

[self.eventStore saveEvent: EVENT4 arco: EKSpanFutureEvents commit: SI errore: & Err4];

https://developer.apple.com/library/ios/documentation/EventKit/Reference/EKEventStoreClassRef/index.html#//apple_ref/swift/struct/EKSpan

+0

Grazie per aver risposto @ Pittmyster..Io controllerò e lo saprò ...! – Vidhyanand

+0

Per curiosità, la soluzione di cui sopra ha risolto il tuo problema? In caso contrario, sei riuscito a trovare una soluzione? – Pittmyster

0

Se ho avuto ragione, il requisito è un evento ricorrente alle 8 del mattino per il periodo dal data di inizio per la data di fine. Event.startdate ed event.enddate intendono specificare un evento particolare. Quindi se vuoi avere un evento da ripetere dal 19-07-2016 al 25-07-2016 ogni giorno alle 8, salva l'evento nel modo seguente:

event.startDate = selectedDateValue.date; //The start date value 19-07-2016 8 am 
    event.endDate = selectedDateValue.date; //The start date value 19-07-2016 8 am. set the same start date value as the end date, so you will be able have the particular event bound to the 8am time frame of the calendar date. 

    NSDate * reccuranceEndDate = selectedEndDateValue.date;//The end date value 25-07-2016 

    EKRecurrenceEnd *recurrenceEnd = [EKRecurrenceEnd recurrenceEndWithEndDate:reccuranceEndDate]; 
    EKRecurrenceRule *rule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily interval:1 end:recurrenceEnd]; 

    event.recurrenceRules = @[rule];