Я делаю приложение секундомера. Я считаю, что время прошло, поскольку приложение было в фоновом режиме, поэтому я могу добавить его в секундомер, когда приложение вернется на передний план. У меня есть этот код, который вызывается, когда NSNotification отправляется на мой StopwatchViewController с истекшим временем в секундах. Я пытаюсь преобразовать секунды в часы, минуты и секунды:Преобразование секунд в часы, минуты и секунды
-(void)newMessageReceived:(NSNotification *) notification
{
elapsedTime = [[notification object] intValue];
elapsedHours = elapsedTime/3600;
elapsedTime = elapsedTime - (elapsedTime % 3600);
elapsedMinutes = elapsedTime/60;
elapsedTime = elapsedTime - (elapsedTime % 60);
elapsedSeconds = elapsedTime;
secondInt = secondInt + elapsedSeconds;
if (secondInt > 59) {
++minuteInt;
secondInt -= 60;
}
minuteInt = minuteInt + elapsedMinutes;
if (minuteInt > 59) {
++hourInt;
minuteInt -= 60;
}
hourInt = hourInt + elapsedHours;
if (hourInt > 23) {
hourInt = 0;
}
}
Объект уведомления присваивается ElapsedTime, но это его; elapsedHours/minutes/seconds все остаются на 0, а elapsedTime остается неизменным. Почему он не работает?
Я бы просто сохранил значение totalTime, увеличил его и * затем * конвертировал в часы/минуты/секунды. Что касается вашего алгоритма, вы испортились с 'elapsedTime = elapsedTime - (elapsedTime% 3600);' lines. Разделите это выражение на отдельные задания, чтобы вы могли изучить промежуточные результаты, и вы найдете свою проблему. –