Как изменить входные данные UITextView через определенную временную шкалу? Например, каждые 24 часа? swift

#ios #swift #time #uitextfield

#iOS #swift #время #uitextfield

Вопрос:

Кто-нибудь знает, какой метод использовать, чтобы настроить автоматическое изменение входных данных UITextView каждые 24 часа? У меня длинный массив строк, и я просто хочу, чтобы TextView отображал новый элемент в этом массиве каждые 24 часа.

Комментарии:

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

2. Я думал, что это как можно проще. Просто сохраните массив внутри класса ViewController как let-константу, и когда выполнение массива закончится, все просто начнется сначала.

Ответ №1:

Предположим, у вас есть

 var arr = ["con1","con2","con3"]
  

Затем, когда вы открыли приложение

 if let date2 = UserDefaults.standard.object(forKey: "date") as? Date {
   var time = Date().timeIntervalSince(date2)
   var res = Int(time.truncatingRemainder(dividingBy:86400))! // 86400 = 24hrs * 60 * 60
   if res < arr.count {
      textView.text = arr[res]
    }  
}
else {
  // first open
  textView.text = arr.first!
  UserDefaults.standard.set(Date(),forKey:"date")
}
  

Комментарии:

1. Это не будет корректно работать в дни, в которых нет 86400 секунд.

2. Привет. Я вижу логику, стоящую за вашими кодами. Однако у меня есть некоторые проблемы с этим. Может быть, это просто я глупый, но я не понимаю, почему вы переводите строки массива в текстовое поле, написав: arr [res] ? И у xCode также есть проблема с этой частью кода

3. Я говорю о вашей математике даты. Это не имеет никакого отношения к размеру массива. Вероятно, более уместно использовать Calendar для получения разницы в днях между двумя датами, чем сравнивать количество секунд с 86400. Не во всех днях содержится 86400 секунд.

4. Насколько я знаю, это на месяц, а не на день, у кого есть 30 / 31 / 28 но день равен 24 часам, никогда не встречалось других 23/25 часов в день

5. Возможно, там, где вы живете, у них нет режима экономии времени при дневном освещении.