Hey,
i am currently working on reading out all reminders with their entries from the EKEventStore database.
I already receive all reminders on the phone but I didn´t get any reminder entries.
So can you help me please? I don´t know what I am doing wrong.
Here is the current code and how I do it right know:
import UIKit
import EventKit
class TaskTableViewController: UITableViewController {
var eventStore = EKEventStore()
var listOfTaskLogData:[TaskLogData]?
/
/
/
override func viewDidLoad() {
super.viewDidLoad()
/
var refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: Selector("refreshTableView"), forControlEvents: UIControlEvents.ValueChanged)
self.refreshControl = refreshControl
}
/
/
/
override func viewWillAppear(animated: Bool)
{
if self.listOfTaskLogData != nil && self.listOfTaskLogData?.count > 0
{
self.listOfTaskLogData?.removeAll()
}
self.checkReminderAuthorizationStatus()
if self.listOfTaskLogData != nil
{
var fileWriter = FileWriter()
fileWriter.writeCalendarLogDataToFile(self.listOfTaskLogData!, fileType: FileType.Text, logCategory: "TaskLog", dataType:DataType.Task ,appendToFile: false)
}
}
/
/
/
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
/
/
/
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if (segue.identifier == "showEventsForReminder")
{
var vc = segue.destinationViewController as! TaskEventsViewController
/
let selectedIndex = self.tableView.indexPathForCell(sender as! TaskLogEntryCell)
vc.taskLogData = self.listOfTaskLogData![selectedIndex!.row]
}
}
/
/
/
func loadReminders()
{
let allReminders = self.eventStore.calendarsForEntityType(EKEntityTypeReminder)
/
let startDate = DateHelper.getStartOfDayForDate(NSDate())
let endDate = DateHelper.getEndOfDayForDate(NSDate())
let searchPredicate = self.eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: allReminders)
/
/
if allReminders != nil
{
for reminder in allReminders
{
var taskLog = TaskLogData()
taskLog.reminderTitle = reminder.title
var events = self.eventStore.eventsMatchingPredicate(searchPredicate) as? [EKReminder] /
/
if events == nil
{
NSLog("No events could be found")
taskLog.countOfEventsOnDay = 0
}
else
{
taskLog.countOfEventsOnDay = 0
/
for event in events!
{
NSLog("Event: %@", event.title!)
/
if event.calendar.title == reminder.title
{
++taskLog.countOfEventsOnDay!
/
if taskLog.reminderEvents == nil
{
taskLog.reminderEvents = [EKEvent]()
taskLog.reminderEvents!.append(event)
}
else
{
taskLog.reminderEvents!.append(event)
}
}*/
}
}
if self.listOfTaskLogData == nil
{
self.listOfTaskLogData = [TaskLogData]()
self.listOfTaskLogData?.append(taskLog)
}
else
{
self.listOfTaskLogData?.append(taskLog)
}
}
}
}
/
/
/
func requestAccessToReminder() {
eventStore.requestAccessToEntityType(EKEntityTypeReminder, completion: {
(accessGranted: Bool, error: NSError!) in
if accessGranted == true {
dispatch_async(dispatch_get_main_queue(), {
self.loadReminders()
self.refreshTableView()
})
} else {
dispatch_async(dispatch_get_main_queue(), {
/
NSLog("Permissions are required")
self.refreshTableView()
})
}
})
}
/
/
/
func checkReminderAuthorizationStatus()
{
var authorizationStatus:EKAuthorizationStatus = EKEventStore.authorizationStatusForEntityType(EKEntityTypeReminder)
switch authorizationStatus {
case EKAuthorizationStatus.Restricted, EKAuthorizationStatus.Denied:
/
/
let alert = UIAlertView(title: "Permissions required!", message: "You have not granted permission for this app to access your Calendar", delegate: nil, cancelButtonTitle: "OK")
alert.show()
break
case EKAuthorizationStatus.Authorized:
self.loadReminders()
self.refreshTableView()
break;
case EKAuthorizationStatus.NotDetermined:
/
self.requestAccessToReminder()
break
default:
let alert = UIAlertView(title: "Privacy Warning", message: "You have not granted permission for this app to access your Calendar", delegate: nil, cancelButtonTitle: "OK")
alert.show()
break;
}
}
}
/
/
/
extension TaskTableViewController
{
/
/
/
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
if listOfTaskLogData != nil && listOfTaskLogData?.count > 0
{
return listOfTaskLogData!.count
}
return 0
}
/
/
/
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = self.tableView.dequeueReusableCellWithIdentifier("taskLogEntryCell", forIndexPath: indexPath) as! TaskLogEntryCell
if self.listOfTaskLogData != nil
{
let data = self.listOfTaskLogData![indexPath.row]
cell.lblTaskName.text = data.reminderTitle
cell.lblCountOfReminderEvents.text = "Events: \(data.countOfEventsOnDay!.description)"
}
return cell
}
/
/
/
func refreshTableView() {
self.tableView.hidden = false
self.tableView.reloadData()
refreshControl?.endRefreshing()
}
}Thank you so much for your help
Regards
Michael