2015-08-20 7 views
0

Я хочу слить что-то с этим кодом. Моя цель - добавить значение цены в метку, которая постоянно уменьшается с каждым секундой при запуске обратного отсчета. Например: CurrentPrice - DiscountPerSecond на первой секунде, а затем CurrentPrice - DiscountPerSecond * 2 на секунду и т. Д. До окончания обратного отсчета.Как уменьшить значение при обратном отсчете?

var timerCounter:NSTimeInterval! 

    func updateTime(interval: NSTimeInterval) -> String { 

     let interval = Int(interval) 

     let seconds = interval % 60 

     let minutes = (interval/60) % 60 

     let hours = interval/3600 


     return String(format: "%02d:%02d:%02d", hours, minutes, seconds) 

    } 




    func startTimer(hour:Int) { 
     timerCounter = NSTimeInterval(hour * 60 * 60) 
     let aSelector : Selector = "onTimer:" 
     NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: aSelector, userInfo: nil, repeats: true) 


    } 


    func onTimer(timer:NSTimer!) { 
     countdownShow.text = updateTime(timerCounter) 
     timerCounter!-- 

     if (timerCounter == 0) { 
      timer.invalidate() 
      countdownShow.text = "Event Closed!" 
     } 
    } 
+0

Полезно? http://codereview.stackexchange.com/a/87353/36366 – nhgrif

+0

Nope :(Мне нужно объединить его со скидкой Цена, как я уже говорил выше –

+0

Вы можете использовать один секунду nstimer, который запускает X раз. Каждый раз, когда он запускает уменьшите свою ценность. Это может быть не самый лучший вариант, хотя, поскольку таймер может быть не точным во времени, если он вызван таким образом. – boidkan

ответ

1

Несколько замечаний:

  1. Вместо того, чтобы отсчет от интервала времени, вы должны сохранять фиксированную дату окончания и расчета интервалов времени от текущего времени по мере необходимости.
  2. Вы должны рассчитать скидки, исходя из доли максимальной скидки, разделенной на долю оставшегося времени. (т. е. price = listPrice - (maximumDiscount * proportionOfTimeElapsed))
  3. Чтобы отформатировать оставшееся время, вы должны использовать NSDateComponentsFormatter.
+0

Я не уверен, что ваш вариант использования, но я должен предупредите вас, что есть серьезные последствия при попытке участвовать в торгах по пунктам в реальном времени. Если пользователь не действует по решению о покупке независимо от кого-либо еще, вам придется выполнить значительную работу, чтобы обработать n> 1 человек, нажав кнопку «Купить» "в то же время времени – mattt

+0

здесь пользователь определяет таймер обратного отсчета как час на первой странице, затем использует segue.identifier и передает информацию на вторую страницу, затем подсчитывает вниз начинается. Я не знаю, как это сделать с NSDate и т. Д. Приведенный выше код выполняет таймер обратного отсчета без ошибки, однако я не понял, как объединить скидку на цену. Все, что мне нужно, когда таймер продолжается, Дисконтированная цена должна постоянно снижаться постоянным дисконтомPerSecond –

+0

Я понял, спасибо :) –