对于 EKevent 的 addAlarm 不起作用 swift

for addAlarm of a EKevent not work swift

我想在 iPhone 日历中注册,使用 addAlarmEKevent,一些警报来自存储到数组中的天数。

然而结果只包含N的最后一个日期的注册。

调试FOR循环,在变量idEvent中我总是找到相同的id。

这些是警报管理的相关步骤:

let store = EKEventStore()
…
func PlanDays(sType: String) {
    //Calculates the days to schedule on the bases of the rules and records them  in the array.
    var dayToPlan = [NSDate]()
    …..
    // An example of adding an extra  date: 
    var dateformatter = NSDateFormatter()
    dateformatter.timeZone = NSTimeZone(name: “GMT”)
    dateformatter.dateStyle = NSDateFormatterStyle.MediumStyle
    dateformatter.locale = NSLocale(localeIdentifier: “it_IT”)
    var From: NSDate = dateformatter.dateFromString(txtdateFrom.text)!
    dayToPlan.append(From)
}
…
// Popup asking if I’ld like to proceed and if I do: 
let Procedo = UIAlertAction(title: “YES!”, style: .Default) { action -> Void in
    var ret: Bool = false
    var event = EKEvent(eventStore: self.store)
    var err: NSError?
    event.calendar = self.store.defaultCalendarForNewEvents
    for giorno in dayToPlan {
        event.startDate = giorno
        event.endDate = giorno
        event.title = self.txtTesto.text
        event.addAlarm(EKAlarm(absoluteDate: event.startDate))
        ret = self.store.saveEvent(event, span: EKSpanThisEvent, commit: true , error: &err)
        idEvento = event.eventIdentifier
    }
    ….
}

谁能帮帮我?

谢谢

您正在循环外创建 EKEvent 实例,这导致一次又一次地重复使用同一个实例。如果您想要每天一个事件/al giorno 在循环内创建一个新事件。

let Procedo = UIAlertAction(title: “YES!”, style: .Default) { action -> Void in
    var ret: Bool = false
    var err: NSError?
    event.calendar = self.store.defaultCalendarForNewEvents
    for giorno in dayToPlan {
        let event = EKEvent(eventStore: self.store)
        event.startDate = giorno
        event.endDate = giorno
        event.title = self.txtTesto.text
        event.addAlarm(EKAlarm(absoluteDate: event.startDate))
        ret = self.store.saveEvent(event, span: EKSpanThisEvent, commit: true , error: &err)
        idEvento = event.eventIdentifier
    }
    ….