2015-03-18 21 views
10

Etkinlikten 5 dk önce Alarm ile bir Takvim Etkinlikleri oluşturdum. Yukarıda o zaman boyunca 00:00 birden çok kez birlikte tarih sonuna kadar başlangıç ​​tarihinden itibaren ekliyor gibi saat 8'de ile etkinlik eklediğinizdeTakvim Olay, IOS'da Olay oluştururken birden çok kez Ekleniyor

My Olay Aşağıda bu

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); 
}; 

benziyor kodum

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]; 

olduğunu Doğru olay ile .. Görüntüler olarak gösterilir.

Multiple events are adding along with correct event with 12AM

Image with Event Time and Event with 12AM

o davranışı varsayılan mi yoksa etkinliğinizi oluştururken şey değiştirmeniz gerekir.

Beklenen Davranış: Olay

Bunu düzeltmek için öneri veya fikirler verin ... saat 8'de yalnızca bitiş tarihine başlangıç ​​ucundan bir kez eklenmelidir ..!

Teşekkürler!!

+0

whre bu şeyler için yaratılmış koddur. .? Bu soru ile çekimleri çekilirsiniz ama gerçek kod Ana şey, takvimdeki etkinlik eklemek için yaratılan kodunuzdur. Muhtemelen bence Loop'da olay kodu eklendiğini ve bunun birden çok kez eklendiğini düşünüyorum. –

+0

Sorumu düzenledim ve referans için kod ekledim. Herhangi bir döngü kullanmıyorum ... – Vidhyanand

+0

Her gün tekrarlamak için iki haftalık bir etkinlik kurdunuz. Neden bunu yapasın? – rmaddy

cevap

2

Başlangıç ​​Kodundan Bitiş Tarihine Etkinlik Oluşturmak İçin Aşağıdaki Kodu Deneyin ve olayınızın yeniden oluĢmasını sağlayarak yineleme Kuralını kaldırın.

:

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

Eğer yinelemeyi kaldırırsam, o zaman sadece beklendiği gibi çalışır.Ama nüksetme kuralı ile bu sorun geliyor .... Benim ihtiyacım gereği benim etkinliğim startDate'den EndDate'e kadar devam etmeli ..! – Vidhyanand

+0

Yinelemeyi kaldırırsam, olay, Başlangıç ​​ve bitiş Tarihi arasında 12AM ile eklenir. Bu, 8 AM değil, 12 AM ile eklemelidir. 18Mar'da, 19Mar'dan 1 ay sonra ekleyerek 18Mar eklenir. - 1 Nis, 12AM ile eklenir. (Bu durumda, kopyalar kaldırılır ancak olay zamanı yanlıştır) – Vidhyanand

+0

, varsayılan takvimdeki gereksinimlerinizle bir etkinlik oluşturmayı denediniz mi? –

1

bu şekilde kodunun son satırını değiştirmeyi deneyin [self.eventStore saveEvent: event4 yayılma: taahhüt EKSpanFutureEvents: EVET hatası: & Err4]; Seni doğru geldiyseniz

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

+0

@ Pittmyster'e cevap verdiğiniz için teşekkür ederim. – Vidhyanand

+0

Merak etme, yukarıdaki çözüm sorununuzu çözdü mü? Yoksa, bir çözüm buldunuz mu? – Pittmyster

0

, gereksinim bitiş tarihine başlangıç ​​tarihinden itibaren dönem için 8 am bir tekrarlayan bir olaydır. Event.startdate ve event.enddate, belirli bir etkinliği belirtmek için kullanılır. Eğer sahip olmak istiyorsanız, aşağıdaki gibi bir olay olayı, günlük 8 am 25-07-2016 etmek 19-07-2016 itibaren tekrarlayın kurtarmak için ki:

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];