Переключите регистр, чтобы изменить между "часами назад" или "днями назад" для даты загрузки, сравнение значения 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