Swift 5, я пытаюсь написать несколько таймеров для дат, которые значительно превышают текущую дату и передают перегруженные аргументы - PullRequest
0 голосов
/ 30 апреля 2020

Проблема: я делаю функцию remindMe для запуска нескольких таймеров, которые можно вызывать любым из этих способов;

  • remindMe (TimerID, "at", atSomeEndTime, onSomeEndDate)
  • remindMe (TimerID, "in", x, y ,lativeStartDateTime, tillSomeEndTime, tillSomeEndDate), где x = Int и y = любой из 'лет / месяцев / недель / дней / часов / минут / секунд', с или
  • remindMe (TimerID, "each", x, y, atSomeTime, fromSomeStartDate / now, tillSomeEndDate)

т.е.

- remindMe(125, "at", 14:59, 30/10/2020)
- remindMe(126, "in", 30, minutes, now)
- remindMe(127, "every", 1, week, 09:00, 25/10/2020, 31/12/2020)

существует элегантный способ перегрузки функции, так что я могу передавать буквенные строки, такие как «минуты» или «сейчас», из среды выполнения непосредственно в функцию без какой-либо последующей обработки ввода конечных пользователей.

Может ли одна и та же функция принимать различное количество входных параметров?

Как долго я могу установить таймеры? Является ли это эффективным способом сделать это, пока я читаю, отправка таймера требует много энергии?

Как заставить эту функцию работать в фоновом режиме, даже если пользователь переключает контекст или другое приложение или прерывается с помощью вызова или закрывает приложение? Делает ли это какой-нибудь метод в уведомлении EventKit или Apple? Кроме того, могу ли я вывести свое приложение на передний план (или даже открыть его) с разрешения пользователей после завершения таймера?

Можете ли вы приостановить таймеры, не аннулируя их? Что произойдет, если вы не аннулируете таймеры в своем коде?

Я предполагаю, что мне придется обновить список всех таймеров ОТКРЫТО, чтобы сохранить их на устройстве пользователя для долгосрочного хранения?

...