2012-04-01 7 views
2

プログラムでプログラムを使用してイベントをデフォルトカレンダーに追加しようとしていますが、イベントの発生時刻とイベントの持続時間。今まで私が数多くのチュートリアルに従ってきたことは、毎日繰り返される終日のイベントを作成することです。私がこれまでに持っているコードは以下の通りです。プログラムでカレンダーイベントを追加するときに特定の日時を指定する方法

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

まだ、どのラインに問題が発生していますか – NSCry

+0

これは私がチュートリアルで使用したコードの組み合わせです。特定の日時にイベントを発生させる方法はわかりません。これは毎日一日中発生します。 – dmeads89

答えて

0

あなたはその文書に従っていますか? http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/EventKitProgGuide/Introduction/Introduction.html

Appleのサンプルコードは見ましたか? http://developer.apple.com/library/ios/#samplecode/SimpleEKDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010160

この行では、時刻を設定することができます event.startDate =あなたの日付オブジェクトの時刻です。

+0

私はドキュメンテーションに従っており、特定の時間にどのように設定するのかはわかりません。ドキュメンテーションの反復ルールのセクションは最も関連性が高いと思われますが、私はまだ時間の側面を理解できません。 Appleのサンプルコードは、そのリンクにありますか、または私が思うカレンダーからイベントを取得していますか? 私はこのドキュメントを使用するのが大丈夫ですが、私は困っています。 – dmeads89

0

私が作っていた間違いは、クラスとクラス名についてどのように考えているかではありませんでした。私が知っている馬鹿だと思う。すべてが開始日と終了日で行われ、正確な時刻を設定するための属性が増えることが予想されます。しかし、今私はこれが正しい秒数を取得し、NSDateを使用することによって行われることがわかります。