如何解决将EKEvent保存到Calendar并将event.identifier存储到Realm数据库
我正在一个项目中,该项目在日历中创建一个事件并将eventIdentifier保存在Realm DB中以供以后参考:
func createCal(eventName: String?,eventDate:Date?) -> String {
var eventId = ""
let eventStore:EKEventStore = EKEventStore()
eventStore.requestAccess(to: .event) { (granted,error) in
if (granted) && (error == nil) {
// print("granted\(granted)")
// print("error\(error)")
let event:EKEvent = EKEvent(eventStore: eventStore)
event.title = eventName
event.startDate = eventDate
event.endDate = event.startDate.addingTimeInterval(3600)
let remider1 = EKAlarm(relativeOffset: -86400)
let remider2 = EKAlarm(relativeOffset: -172800)
event.alarms = [remider1,remider2]
event.notes = "Eveniment autogenerat de aplicatia CARMem"
event.calendar = eventStore.defaultCalendarForNewEvents
do {
try eventStore.save(event,span: .thisEvent,commit: true)
eventId = event.eventIdentifier
}catch let error as NSError {
print("error\(error)")
}
print("Event Saved")
}else{
print("error\(String(describing: error))")
}
}
return eventId
}
@IBAction func savepressed(_ sender: UIButton) {
if let currentCategory = selectedCategory.self {EKEventStore.authorizationStatus(for: .event)
do {
try realm.write{
let newEveniment = Eveniment()
newEveniment.title = typeTextField.text! // sa vedem
newEveniment.date = finalDate
let al1Input = Int(al1TextField.text ?? "30")
let al2Input = Int(al2TextField.text ?? "15")
newEveniment.alert1 = al1Input ?? 30
newEveniment.alert2 = al2Input ?? 15
newEveniment.calendarID = createCal(eventName: typeTextField.text,eventDate: finalDate)
print("event salavat in db:\(newEveniment.calendarID)")
currentCategory.sofetEveniment.append(newEveniment)
realm.add(newEveniment)
}
}catch{
print("Eroare la salvarea evenimentului \(error)")
}
}
对于我的一生,我不明白为什么返回的eventId var为nil。 我已经尝试过无数关于堆栈溢出的解决方案,但是似乎没有任何效果。
任何帮助/指针将不胜感激。
解决方法
将事件实际保存到日历时,可以获得EKEvent标识符。
例如:
public func eventEditViewController(_ controller: EKEventEditViewController,didCompleteWith action: EKEventEditViewAction) {
controller.dismiss(animated: true,completion: nil)
switch action {
case .saved:
print("Event created: \(controller.event?.eventIdentifier)")
break
default:
break
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。