0
- 月の13日にイベントを設定して毎月繰り返す。毎月適切に繰り返されています。 しかし、ある月の31日に設定すると、月に31回だけ設定され、編集 - >繰り返し - >毎月31秒ごとに繰り返されるイベントで設定されます。
- その月に利用可能な日付が31日もない場合は、少なくとも最終日の月に設定します。
- また、2月29日、30日、31日も、これらの日付の他の月のイベントは作成されません。
削除と編集が容易になるように、連続した一連のイベントを設定する必要があることに注意してください。「毎月31回繰り返す」ではなく、「毎月繰り返す」イベントの繰り返しを設定するios
私は次のコードを書いた:ここ
let eventstore : EKEventStore = EKEventStore()
eventstore.requestAccess(to: EKEntityType.event, completion: { (isallow, error) -> Void in
var event:EKEvent!
if (event == nil) {
event = EKEvent(eventStore: eventstore)
event.title = self.getReminderTitleForCalendarEvent(dtDate: date)
event.notes = ""
event.startDate = date
event.endDate = date
event.calendar = eventstore.defaultCalendarForNewEvents
let ekrules: EKRecurrenceRule = EKRecurrenceRule.init(recurrenceWith: EKRecurrenceFrequency.monthly, interval:self.selectedFrequency!, end: nil)
event.recurrenceRules = [ekrules]
}
else // if there is already a event then update date
{
// if event is deleted by user
event.startDate = date
event.endDate = date
if let oldalarm = event.alarms?[0]// remove old date alarm
{
event.removeAlarm(oldalarm)
}
// Below code is to remove existing event
do
{
try eventstore.remove(event, span: .thisEvent)
//self.objselectedinfusion.strEventId = event.eventIdentifier
}
catch let error as NSError {
//print(error.localizedDescription)
}
}
let alarm = EKAlarm(relativeOffset: self.getTimeIntervalForAlert())
let alarm = EKAlarm(absoluteDate: reminderFireDate as Date)
event.addAlarm(alarm)
do
{
try eventstore.save(event, span: EKSpan.futureEvents, commit: true)
UserDefaults.standard.set(event.eventIdentifier, forKey: Constant.calendarEventID)
}
catch let error as NSError {
//print(error.localizedDescription)
}
})
selectedFrequency
は、数ヶ月のいくつかの数である再発間隔です。
SOは、コードのみの回答について説明しています。どのように動作するのか、このコードがOPの問題を解決する理由について説明できますか? – toonarmycaptain
これを読んでください - 上記のansは完全ではありません - あなたは複雑な反復ルールを作成しなければなりません。 https://developer.apple.com/documentation/eventkit/ekrecurrencerule/1507320-init –