2012-01-02 3 views
1

カレンダーの予定を表示できるアプリを作成しようとしています。私はすべてのプロパティを読むことができますが、EKAlarmに問題があります。 forループでNSLogを実行すると、15分のアラームログに達するはずですが、それを超えていることを確認します。EKAlarm/EKEvent

for (int i = 0; i < [event1.alarms count]; i++) { 

    if ([event1.alarms objectAtIndex:i] == [EKAlarm alarmWithRelativeOffset:-900]) { 
     NSLog(@"alarm: 15 min before"); 
    }else if([event1.alarms objectAtIndex:i] == [EKAlarm alarmWithRelativeOffset:-1800]) { 
     NSLog(@"alarm: 30 min before"); 

    }else if([event1.alarms objectAtIndex:i] == [EKAlarm alarmWithRelativeOffset:-3600]) { 
     NSLog(@"alarm: 1 hour before"); 

    }else if([event1.alarms objectAtIndex:i] == [EKAlarm alarmWithRelativeOffset:-86400]) { 
     NSLog(@"alarm: 1 day before"); 

    } 

} 

答えて

3

あなたがここでやっていることは、あなたが比較の時に配分しているあなたがたNSArrayに保存さEKAlarmsと、新しく作成されたアラームの間にポインタを比較しています。

同等性のテストに使用できるのは、アラームのrelativeOffsetプロパティです。

のような何か:

for (int i = 0; i < [event1.alarms count]; i++) { 

    NSTimeInterval offset = [[event1.alarms objectAtIndex:i] relativeOffset]; 

    if (offset == -900) { 
     NSLog(@"alarm: 15 min before"); 
    } 
    else if(offset == -1800) { 
     NSLog(@"alarm: 30 min before"); 
    } 
    else if(offset == -3600) { 
     NSLog(@"alarm: 1 hour before"); 
    } 
    else if(offset == -86400) { 
     NSLog(@"alarm: 1 day before"); 
    } 
}