ios - 为新提醒获取新日历时出错

标签 ios iphone swift reminders

我正在尝试在我的应用程序中添加一项功能,以便用户可以使用以下方法获取提醒列表。

以下方法是我用来检索提醒的主要方法:

func getReminders(){

    var eventStore : EKEventStore = EKEventStore()    
    // This lists every reminder
    var calender = getCalender(eventStore)
    let calendars = eventStore.calendarsForEntityType(EKEntityTypeReminder)
        as! [EKCalendar]

    //cals.append(calender)
    var predicate = eventStore.predicateForRemindersInCalendars([calender])
    eventStore.fetchRemindersMatchingPredicate(predicate) { reminders in
        for reminder in reminders {
            println(reminder.title)

            self.remindersTitles.append(reminder.title!!)
        }}
    var startDate=NSDate().dateByAddingTimeInterval(-60*60*24)
    var endDate=NSDate().dateByAddingTimeInterval(60*60*24*3)
    var predicate2 = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: nil)

    println("startDate:\(startDate) endDate:\(endDate)")
    var eV = eventStore.eventsMatchingPredicate(predicate2) as! [EKEvent]!

    if eV != nil {
        for i in eV {
            println("Title  \(i.title!)" )
            println("stareDate: \(i.startDate)" )
            println("endDate: \(i.endDate)" )
        }
    }
}

正如您所注意到的,我正在创建一个日历并将名为“getCalender”的方法的返回值分配给它:

func getCalender(store: EKEventStore) -> EKCalendar {
    let defaults = NSUserDefaults.standardUserDefaults()
    if let id = defaults.stringForKey("GSCalender") {
        return store.calendarWithIdentifier(id)
    } else {
        var calender = EKCalendar(forEntityType: EKEntityTypeReminder, eventStore: store)
        calender.title = "Genie Sugar Calender!"
        calender.CGColor = UIColor.redColor().CGColor
        calender.source = store.defaultCalendarForNewReminders().source!
        var error: NSError?

        store.saveCalendar(calender, commit: true, error: &error)

        if error == nil {
            defaults.setObject(calender.calendarIdentifier, forKey: "GSCalender")
        }

        if calender == nil {
            println("nothing here")
        }
        return calender
    }
}

但问题是应用程序卡在了第二种方法的这一行:

calender.source = store.defaultCalendarForNewReminders().source!

然后返回这个错误:

Error getting default calendar for new reminders: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed.

有什么想法可以克服这个问题吗?非常感谢

最佳答案

我注意到 iPhone 模拟器在重置后 - store.defaultCalendarForNewReminders() 返回 nil。我相信这是一个模拟器错误。

关于ios - 为新提醒获取新日历时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30692656/

相关文章:

swift - UIAlertAction 在其回调中关闭 UIAlertController

android - 使用 iPad 和 Droid 应用程序中保留的格式导入、解析、编辑和保存 RTF 文档

ios - Ionic 1 WkWebView iOS - 无法加载资源 : Origin ionic://localhost is not allowed by Access-Control-Allow

javascript - iPad preventDefault action only on first link click

html - 在iPhone中,键盘弹出时光标会停留在原来的位置

macos - 在 Swift 中以编程方式为 OS X 构建 UI(没有 Interface Builder)

ios - 重新加载节中的标题,而不用快速重新加载节行

ios - 如何在 ios 中的 imageview 上进行六边形图像 mask ?

ios - Xcode 排除特定设备 Info.plist

iphone - 在XCode中编译多个目标时,如何确保某些文件不会包含在一个目标中