Эта строка кода:
let terminationDate = UserDefaults.standard.object(forKey: "latestTerminationDate") as? Date
Не возвращает то, что вы думаете, что делает.Потому что в этой строке кода:
UserDefaults.standard.set(Date(), forKey: "latestTerminationDate")
Date()
, который вы вводите, выглядит так: «2018-10-04 15:30:22 +0000», который нельзя сравнить с 86400
По этой причине:
if terminationDuration >= 86400
не удается и возвращается к:
else {
terminationDuration = 50
РЕДАКТИРОВАТЬ
ПРИМЕР FIX:
func getMillisecondsNow() -> Int64{
let currentDate = Date()
return getMillisecondsFromDate(date: currentDate)
}
func getMillisecondsFromDate(date: Date) -> Int64{
var d : Int64 = 0
let interval = date.timeIntervalSince1970
d = Int64(interval * 1000)
return d
}
func getTimeDifferenceFromNowInMilliseconds(time: Int64) -> Int64{
let now = getMillisecondsNow()
let diff: Int64 = now - time
return diff
}
Это будет в миллисекундах, поэтому вам нужно будет использовать 86400000 (миллисекунды в 24 часа) вместо 86400 (секунд в24 часа)
Теперь в вашем коде просто используйте это, чтобы сохранить время завершения в миллисекундах:
let now = getMillisecondsNow()
UserDefaults.standard.set(now, forKey: "latestTerminationDate")
и этот код, чтобы получить и получить разницу во времени в миллисекундах:
let terminationTime = UserDefaults.standard.object(forKey: "latestTerminationDate") as? Int64
let timeDiff = getTimeDifferenceFromNowInMilliseconds(time: terminationTime)
if timeDiff >= 86400000 {
}
else {
}