Переключите регистр, чтобы изменить между "часами назад" или "днями назад" для даты загрузки, сравнение значения Int возвращает ошибку

Я пытаюсь использовать случай переключения для форматирования даты загрузки. Я делаю это путем преобразования времени между временем загрузки и текущим временем в секунды, а затем переключаюсь между ними в зависимости от того, больше ли они значения, 60 для минуты и т. Д.

switch timeDifference {
case timeDifference < 60:

Разница во времени - это Int, а 60 - это число, с которым оно сравнивается.

Для справки, вот как я получаю это значение.

timeDifference = Calendar.current.dateComponents([.second], from: targetDate, to: Date()).second

Однако при этом он возвращает ошибку о том, что не может сравнивать Int.

Expression pattern of type 'Bool' cannot match values of type 'Int'

Я не до конца понимаю, что означает эта ошибка, поэтому было бы полезно получить пояснения по этому поводу, но, глядя на другие подобные вопросы, можно провести сравнение в случае переключения.

Другой вариант - урезать значение до чего-то более управляемого, но я не уверен, как это сделать, поскольку значения времени не являются базовыми 10. Или я просто делаю if-else.

1 ответ

Решение

Ваш case значение является логическим выражением, которое не может быть сопоставлено с Int,

Если вы действительно хотите сделать сравнение, то используйте where пункт:

switch timeDifference {
    case let t where t < 60:
        // do something

Как @MartinR предложил в комментариях, вы могли бы лучше использовать Interval Matching:

switch timeDifference {
    case 0..<60:
        // do something
Другие вопросы по тегам