Переключение регистра для изменения даты загрузки на «часы назад» или «дни назад», сравнение значения Int возвращает ошибку - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь использовать случай переключения для форматирования даты загрузки.Я делаю это путем преобразования времени между временем загрузки и текущим временем в секунды, а затем переключаюсь между ними в зависимости от того, больше ли они значения, 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. Или я просто делаю если-еще.

1 Ответ

0 голосов
/ 01 июня 2018

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

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

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

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

switch timeDifference {
    case 0..<60:
        // do something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...