InOut String не конвертируется в String - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть функция, которая возвращает st или th, соответствующие датам. Теперь я хочу вернуть месяц вместе с ним. Месяц печатается правильно, но когда я пытаюсь добавить его, если он выдает эту ошибку, inOutString не преобразуется в String.

if let date = dateFormatterGet.date(from: date)
    {

        let monthString: String = dateFormatterMonthPrint.string(from: date)

        print("This is month Str: \(monthString)")

        var dateString = dateFormatterPrint.string(from: date)

        switch (dateString) {

        case "1" , "21" , "31":  dateString.append("st") + "," + "\(monthString)"

        case "2" , "22": dateString.append("nd")

        case "3" ,"23": dateString.append("rd")

        default: dateString.append("th")
        }

        return dateString
    }

Может кто-нибудь помочь?

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Используйте вот так, вам не нужно использовать append

enter image description here

0 голосов
/ 27 апреля 2018

Просто переместите закрывающие скобки в конец строки, чтобы объединить буквенные строки перед добавлением результата и созданием строки из строки с интерполяцией строк. Избыточность

case "1" , "21" , "31":  dateString.append("st, " + monthString)

Примечание:

Вместо использования (нескольких) форматеров даты для получения компонентов даты из даты используйте Calendar и DateComponents. Это гораздо эффективнее, например

let components = Calendar.current.dateComponents([.day, .month], from: date)
let day = components.day!
let month = components.month!

Оба значения Int

0 голосов
/ 27 апреля 2018

Ошибка здесь:

case "1" , "21" , "31":  dateString.append("st") + "," + "\(monthString)"

dateString.append не не возвращает значение. Он только мутирует (изменяется) dateString. Это означает, что вы можете использовать этот метод в выражении, ожидающем String.

Swift имеет строковую интерполяцию, поэтому вам не нужны эти вещи +, и append можно заменить на оператор +=:

case "1" , "21" , "31":  dateString += "st, \(mothString)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...