Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 Swift 3:EKEventStore不';t排除复发的单一事件_Swift3 - Fatal编程技术网

Swift3 Swift 3:EKEventStore不';t排除复发的单一事件

Swift3 Swift 3:EKEventStore不';t排除复发的单一事件,swift3,Swift3,这是我简化的事件删除函数,不能很好地处理复发。 EventStore在应用程序加载时创建一次。 使用recurrenceRule编辑和保存单个事件可以正常工作,但是使用recurrenceRule删除事件会删除所有事件,而不是一个事件,无论我通过了什么。同时删除未来事件(EKSpan.futureEvents),也会从同一复发事件中删除以前的事件。其他一切看起来都很好 我错过了什么?谢谢你抽出时间 let eventStore = EKEventStore() func deleteEven

这是我简化的事件删除函数,不能很好地处理复发。 EventStore在应用程序加载时创建一次。 使用recurrenceRule编辑和保存单个事件可以正常工作,但是使用recurrenceRule删除事件会删除所有事件,而不是一个事件,无论我通过了什么。同时删除未来事件(EKSpan.futureEvents),也会从同一复发事件中删除以前的事件。其他一切看起来都很好

我错过了什么?谢谢你抽出时间

let eventStore = EKEventStore()


func deleteEvent(_ storedEventID: String)
{
    eventStore.requestAccess(to: .event, completion: { (granted, error) in
        if (granted) && (error == nil)
        {

            if let calendarEvent_toDelete = self.eventStore.event(withIdentifier: storedEventID){

                //recurring event
                if calendarEvent_toDelete.recurrenceRules?.isEmpty == false
                {
                    let alert = UIAlertController(title: "Repeating Event", message:
                        "This is a repeating event.", preferredStyle: UIAlertControllerStyle.alert)

                    //delete this event only
                    let thisEvent_Action = UIAlertAction(title: "Delete this event", style: UIAlertActionStyle.default)
                    {
                        (result : UIAlertAction) -> Void in

                        //sometimes doesn't delete anything, sometimes deletes all reccurent events, not just current!!!
                        do{
                            try self.eventStore.remove(calendarEvent_toDelete, span: .thisEvent)
                        } catch let e as NSError{return}

                    }


                    alert.addAction(thisEvent_Action)

                    if let topViewController = UIApplication.topViewController(){
                        topViewController.modalPresentationStyle = UIModalPresentationStyle.overFullScreen
                        topViewController.present(alert, animated: true)
                    }
                }
                //not recurring event
                else{
                    //works fine
                    do{
                        try self.eventStore.remove(calendarEvent_toDelete, span: EKSpan.thisEvent)
                    } catch let e as NSError{
                        return
                    }
                }
            }

    }
    })
}
这有帮助

func deleteEvent(calendarEvent_toDelete: EKEvent){
    ...
    calendarEvent_toDelete.recurrenceRules?.removeAll() 
    try self.store.save(calendarEvent_toDelete, span: .thisEvent)

    try self.store.remove(calendarEvent_toDelete, span: .thisEvent, commit: true)
    ...
}
这有帮助

func deleteEvent(calendarEvent_toDelete: EKEvent){
    ...
    calendarEvent_toDelete.recurrenceRules?.removeAll() 
    try self.store.save(calendarEvent_toDelete, span: .thisEvent)

    try self.store.remove(calendarEvent_toDelete, span: .thisEvent, commit: true)
    ...
}

找到我的问题,但不在发布的代码中。找到我的问题,但不在发布的代码中。