inOut String不可转换为String

时间:2018-04-27 06:09:34

标签: swift

我有一个函数返回与日期匹配的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 :(得分:0)

错误在于:

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

dateString.append 会返回一个值。它只会改变(改变)dateString。这意味着您可以在期望String

的表达式中使用此方法

Swift有字符串插值,因此您根本不需要这些+项内容,append可以替换为+=运算符:

case "1" , "21" , "31":  dateString += "st, \(mothString)"

答案 1 :(得分:0)

像这样使用,你不需要使用追加

enter image description here

答案 2 :(得分:0)

只需将右括号移动到行尾以连接文字字符串,然后附加结果并使用字符串从字符串创建字符串插值是多余的

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

注意:

使用CalendarDateComponents而不是使用(多个)日期格式化程序从日期获取日期组件。这样的效率更高,例如

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

这两个值均为Int