#objective-c #integer #uilocalnotification
#objective-c #целое число #uilocalnotification
Вопрос:
я хочу использовать «дату запуска» для локального уведомления. Как я могу использовать целочисленную переменную, содержащую секунды, для запуска firedate?
int intTime;
intTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.5*3600;
notif.fireDate = (intTime);
Я знаю, что приведенный выше код неверен, просто дайте мне подсказку, ребята! Заранее спасибо.
ps. Когда я пытаюсь использовать этот код, я получаю «несовместимое преобразование целого числа в указатель, присваивающее ‘NSDate * из int».
Комментарии:
1. Что не так с кодом? Выдает ли это ошибки? Работает ли он не так, как ожидалось? Будьте конкретны.
2. Я отредактировал сообщение. Пожалуйста, прочитайте ps.
Ответ №1:
Это fireDate
должно быть NSDate*
так, поскольку вы знаете, что ваше решение неверно. Если ваши вычисления приводят к секундам, которые вы хотите использовать от текущего времени до срабатывания, то будет работать следующий код.
NSTimeInterval time = ([mAhLabel.text floatValue]/chargerSlider.value)*1.5*3600;
notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:time];
Также убедитесь, что деление на 0
невозможно chargerSlider.value
с помощью либо установки минимального значения, либо проверки значения перед делением. В противном случае результат был бы NaN
.
Ответ №2:
fireDate
Свойство UILocalNotification имеет NSDate
тип. Вам нужно будет создать NSDate
first с целым числом как количество времени в будущем, которое вам нужно. Например, если бы мы искали дату запуска, которая через час, это выглядело бы так.
notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:3600];