Напоминание добавлено через приложение, не показывающее время будильника - PullRequest
0 голосов
/ 14 января 2019

Я нахожусь в процессе написания приложения, которое позволяет пользователям добавлять напоминания с временем будильника. Напоминание работает правильно, и будильник срабатывает, когда это необходимо, но когда я захожу в приложение «Напоминания» и смотрю на напоминание, установленное в моем приложении, текст будильника не отображается под именем напоминания в UITableViewCell .

Вот приложение «Напоминания», показывающее напоминание, установленное через приложение «Напоминания», и одно, установленное через мое приложение:

enter image description here

Даже если текст не отображается в ячейке, если я редактирую напоминание, будильник установлен правильно:

enter image description here

Прямо сейчас, в приложении немногое - я только начинаю. Вот экран, который я сейчас использую для добавления напоминания.

enter image description here

Это код, который используется для добавления напоминания и будильника:

func createReminder() {

    let reminder = EKReminder(eventStore: appDelegate.eventStore!)

    reminder.title = reminderText.text!
    reminder.calendar =
        appDelegate.eventStore!.defaultCalendarForNewReminders()
    let date = myDatePicker.date
    let alarm = EKAlarm(absoluteDate: date)

    reminder.addAlarm(alarm)

    do {
        try appDelegate.eventStore?.save(reminder,
                                         commit: true)
    } catch let error {
        print("Reminder failed with error \(error.localizedDescription)")
    }
}

Чего мне не хватать?

1 Ответ

0 голосов
/ 14 января 2019

Мне кажется, я понимаю вашу проблему. Я просто использовал ваш код для создания напоминания, и он просто создал напоминание без даты в подзаголовке.

Что нам нужно понять, так это установить дату будильника! = Срок исполнения напоминания. Пользователи могут установить дату / время и добавить напоминания до даты. Прочитайте документацию для получения дополнительной информации.

Чтобы добавить дату, необходимо установить dueDateComponents свойства EKReminder объекта, который вы передаете в eventStore. Как показано ниже,

let reminder = EKReminder(eventStore: eventStore)
reminder.title = reminderText
reminder.calendar = eventStore.defaultCalendarForNewReminders()

let date = Date().addingTimeInterval(10000)
let alarm = EKAlarm(absoluteDate: date)
reminder.addAlarm(alarm)

let dateComponents = NSDateComponents();
dateComponents.year = 2018
dateComponents.day = 14
dateComponents.hour = 11
dateComponents.month = 1
reminder.dueDateComponents = dateComponents as DateComponents

do{
     try eventStore.save(reminder, commit: true)
} catch let error {
     print("Reminder failed with error \(error.localizedDescription)")
}

На скриншоте ниже показано 4 события. Первый и последний были созданы вручную, второй был создан из вашего кода без dueDateComponents, а третий - с dueDateComponents.

The one with the red one was created with dueDateComponents

...