2012-04-01 7 views
2

Ich versuche aber nicht finden kann, um programmatisch ein Ereignis in die Standardkalender hinzufügen, wie ich die Zeit einstellen, bei dem die Veranstaltung stattfindet, und die Dauer der Veranstaltung . Alles, was ich bisher erreicht habe, indem ich verschiedenen Tutorials folgt, ist die Schaffung eines ganztägigen Events, das jeden Tag wiederkehrt. Der Code, den ich bisher habe, ist unten.Wie man einen bestimmten Tag und Uhrzeit angeben, wenn Kalenderereignis Hinzufügen programmatisch

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

    EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 


    // use this in the method that actually creates the event 
    NSError *err = nil; 
    //This date will be the date our reminder expires, as in stops recurring. Two years was chosen as most users 
    //will replace their device after 2 years 
    NSDate *fourteenWeeksFromNow = [NSDate dateWithTimeIntervalSinceNow:8467200]; 
    //Define the recurrance rule 
    EKRecurrenceRule *recurrance; 
    NSDateComponents *comp = [[NSDateComponents alloc]init]; 


    [comp setYear:0]; 
    [comp setMonth:0]; 
    [comp setDay:7]; 
    //Recurr every 7 days I think but not working 
    recurrance = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyWeekly interval:1 end:[EKRecurrenceEnd recurrenceEndWithEndDate:fourteenWeeksFromNow]]; 

    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    //Our remind date 
    NSDate *eventDate = [cal dateByAddingComponents:comp toDate:[NSDate date] options:0]; // unsure what this does or how to use it 


    double alarmAmountInSeconds = 60.0*60.0*0.25; // 15 mins 
    EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:(-1.0*alarmAmountInSeconds)]; // this is working correctly, alerts 15 minutes before 

    NSMutableArray *alarmsArray = [[NSMutableArray alloc] init]; 

    [alarmsArray addObject:alarm]; 


    [recurrenceRules arrayByAddingObject:recurrance]; 

    event.title = module; 

    event.startDate = [[NSDate alloc] init]; // works 
    event.endDate = [[NSDate alloc] initWithTimeInterval:8467200 sinceDate:event.startDate]; // works 

    event.calendar = eventStore.defaultCalendarForNewEvents; // works 
    event.title = module; // works 
    event.allDay = FALSE; // dont want it all day but need to be able find out how to set time 
    event.location = @"Test location"; 
    event.alarms = alarmsArray; // works 
    event.recurrenceRules = recurrenceRules; // not working could be problems with other attributes though 
    event.notes = @"This is a test"; // works 


    // Try to save the event 
    [eventStore saveEvent:event span:EKSpanFutureEvents error:&err]; 
+0

Immer noch nicht die Linie sind Sie immer Probleme Datum bekommen – NSCry

+0

Dies ist eine Mischung aus Code ist ich aus einem Tutorial verwendet haben. Ich weiß nicht, wie ich das Ereignis an einem bestimmten Tag oder zu einer bestimmten Uhrzeit erhalten kann. Dies geschieht jeden Tag den ganzen Tag. – dmeads89

Antwort

0

Haben Sie diese Dokumentationen gefolgt? http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/EventKitProgGuide/Introduction/Introduction.html

Haben Sie Beispielcode von Apfel ?? http://developer.apple.com/library/ios/#samplecode/SimpleEKDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010160

In dieser Zeile können Sie die Uhrzeit event.startDate = Ihre Zeit mit Datum Objekt einstellen.

+0

Ich habe die Dokumentation verfolgt, und es kann ich nicht überall finden, das sagt, wie es eingerichtet für eine bestimmte Zeit. Der Wiederholungsregelabschnitt in der Dokumentation scheint am relevantesten zu sein, aber ich kann den Zeitaspekt immer noch nicht herausfinden. Der Beispielcode von Apple in diesem Link oder Abrufen von Ereignissen aus dem Kalender denke ich? Entschuldigt meinen Mangel an wissen, wie ich die Dokumentation aber diesmal war ich ratlos bei Verwendung bin normalerweise ok bin. – dmeads89

0

Der Fehler war ich war nicht zu machen, wie ich über die Klassen dachte und die Klassennamen. Scheint blöd ich weiß. Alles ist mit Start- und Enddatum gemacht und ich erwarte mehr Attribute, um die genaue Zeit einzustellen. Aber jetzt sehe ich, dass dies getan wird, indem man die richtige Anzahl von Sekunden bekommt und NSDate benutzt.