我在使用 Swift 时尝试在 iOS 的日历应用程序上创建新事件时遇到问题。
这是我目前所拥有的:
func addToCal(){
let eventStore = EKEventStore()
eventStore.requestAccessToEntityType(EKEntityTypeReminder) {
(granted: Bool, err: NSError!) in
if granted && !err {
var event:EKEvent = EKEvent(eventStore: eventStore)
event.title = self.eventTitle!.text
event.startDate = self.eventData.startDateObj
event.endDate = self.eventData.endDateObj
event.calendar = eventStore.defaultCalendarForNewEvents
eventStore.saveEvent(event, span: EKSpanThisEvent, error: nil)
println("Saved Event")
}
}
这是我遇到的错误:
Error getting default calendar for new events: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"
我检查了我的语法,我很确定我做对了,所以任何人都可以帮我找出我哪里出错了吗?
附加信息
- iOS 8 测试版 5
- Xcode 6 测试版 5
- 问题出现在带 Retina 显示屏的 iPad Mini(真实设备)上
更新
将 EKEntityTypeReminder
更改为 EKEntityTypeEvent
(抱歉,我的错误)实际上不会产生错误,但现在该事件甚至不会显示在日历中。我检查了 granted
和 err
的输出,分别看到了 false
和 nil
。
最佳答案
我认为您的主要问题是您没有提交要保存的新事件。以下代码是我使用的代码,主要区别在于我的代码包含一个提交,如果有的话,允许将我的错误从“nil”更改为“nil”。最后的条件只是将任何保存错误或保存成功的报告打印到调试区。
let eventStore = EKEventStore()
let event = EKEvent(eventStore: eventStore)
event.title = "Your Event Title Here" // Sets event's title
event.startDate = NSDate() // Sets event's start date
event.endDate = event.startDate.dateByAddingTimeInterval(20000) // Sets event's end date
event.calendar = eventStore.defaultCalendarForNewEvents // Selects default calendar
var saveError : NSError? = nil // Initially sets errors to nil
eventStore.saveEvent(event, span: EKSpanThisEvent, commit: true, error: &saveError) // Commits changes and allows saveEvent to change error from nil
//// Following checks for errors and prints result to Debug Area ////
if saveError != nil {
println("Saving event to Calendar failed with error: \(saveError!)")
} else {
println("Successfully saved '\(event.title)' to '\(event.calendar.title)' calendar.")
}
希望这对您有所帮助!
-戈洛夫斯基
关于swift - 获取新事件的默认日历时出错 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346215/