【问题标题】:How can I retrieve calendar event of only the current day?如何仅检索当天的日历事件?
【发布时间】:2017-05-25 07:11:22
【问题描述】:

我想在我的tableView 中检索当前日期的数据/事件,我想我需要使用EventKit,但不知道如何使用。

这是我尝试过的,但似乎不起作用:它只显示部分而不是事件的标签

class ViewController: UIViewController,UITableViewDelegate{

@IBOutlet weak var taskShow: UITableView!
var titles : [String] = []

override func viewDidLoad() {
    super.viewDidLoad()

    let eventStore = EKEventStore()

    switch EKEventStore.authorizationStatus(for: .event) {
    case .authorized:
        readEvents()
    case .denied:
        print("Access denied")
    case .notDetermined:

        eventStore.requestAccess(to: .event, completion: { (granted: Bool, NSError) -> Void in
            if granted {
                self.readEvents()

            }else{
                print("Access denied")
            }



        })
    default:
        print("Case Default")
    }
    self.taskShow.reloadData()
}

func readEvents() {


    let eventStore = EKEventStore()
    let calendars = eventStore.calendars(for: .event)

    for calendar in calendars {
        if calendar.source.title == "Work" {
            let oneMonthAgo = NSDate(timeIntervalSinceNow: -30*24*3600)
            let oneMonthAfter = NSDate(timeIntervalSinceNow: +30*24*3600)


            let predicate = eventStore.predicateForEvents(withStart: oneMonthAgo as Date, end: oneMonthAfter as Date, calendars: [calendar])

            var events = eventStore.events(matching: predicate)

            for event in events {

                titles.append(event.title)
  }}}}


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return titles.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath as IndexPath)


    cell.textLabel!.text = titles[indexPath.row]
    // Configure the cell...

    return cell
}

【问题讨论】:

  • 检查这个stackoverflow.com/questions/6077613/…它会帮助你
  • 我认为您正在获取事件,但您必须在 readEvents() 中重新加载表......也许它会起作用。
  • @PradeepKashyap 不,它不起作用。

标签: ios swift uitableview eventkit


【解决方案1】:

您可以使用 EventKit 来读取日历事件。Apple 已经记录了 EventKit 的使用。请参阅下面的 Apple 链接了解详细信息。 https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingEvents.html

【讨论】:

猜你喜欢
  • 2020-05-12
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多