ios - Swift 4.2 EventKit 将所有事件获取到 TableView didSelectedRowAt 上的选定日历

标签 ios swift eventkit

我正在将我所有的日历加载到一个表格 View 中,其中每个日历都在一个单元格中表示。 现在我想在点击单元格时打印单元格日历的所有事件。 问题是,根据您看到的代码,我得到了所有 日历的事件。

如何让函数只查看我在 tableview 中点击的日历?

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let calendarTitle = calendars![indexPath.row].title
    print(calendarTitle)
    let calendar = Calendar.current
    print("Current \(calendar)")

    var oneDayAgoComponents = DateComponents()
    oneDayAgoComponents.day = -1
    let oneDayAgo = calendar.date(byAdding: oneDayAgoComponents, to: Date())

    var oneDayFromNowComponents = DateComponents()
    oneDayFromNowComponents.day = 7
    let oneDayFromNow = calendar.date(byAdding: oneDayFromNowComponents, to: Date())

    var predicate: NSPredicate? = nil
    if let anAgo = oneDayAgo, let aNow = oneDayFromNow {
        predicate = eventStore.predicateForEvents(withStart: anAgo, end: aNow, calendars: nil)

    }

    var events: [EKEvent]? = nil
    if let aPredicate = predicate {
        events = eventStore.events(matching: aPredicate)

        for event in events! {
            print(event.title)
        }
    }
}

最佳答案

您必须在 predicateForEventscalendars 参数中传递日历

let rowCalendar = calendars![indexPath.row]
let calendarTitle = rowCalendar.title
print(calendarTitle)

...

if let anAgo = oneDayAgo, let aNow = oneDayFromNow {
    predicate = eventStore.predicateForEvents(withStart: anAgo, end: aNow, calendars: [rowCalendar])
}

并且请将数据源数组声明为非可选空数组,因为您无论如何都要强制展开它

var calendars = [EKCalendar]()

关于ios - Swift 4.2 EventKit 将所有事件获取到 TableView didSelectedRowAt 上的选定日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55264758/

相关文章:

python - PyAPNS SSL3_WRITE_PENDING 错误

ios - PFQueryTableViewController 快速按日期划分

ios - 使用 UIBezierPath 绘制自定义 View 会导致非对称形状

ios - 如何管理自动布局中两个 View 之间的间隙

ios - Swift 崩溃报告对我来说没有意义

iphone - EventKit 框架中的贪睡方法?

iOS 沙发底座 : Shared CBL manager between app and app extension

ios - Swift:成为 UITextField 上的第一响应者不起作用?

iphone - 是否可以将文件附加到 ios 日历事件?

iOS:如何保存哪个是首选 EKCalendar?