if else错误中的返回值

时间:2018-04-26 09:49:25

标签: swift

我有一个dateFormatted,我从API获取日期。从2018年4月28日开始,我得到的值是28,所以,我必须在Swift旁边添加28这个?有谁知道这个?

我正在尝试的是根据日期将值设置为“th”或“st”。我知道逻辑。我只是坚持这个:

let dateText = dateFormatterPrint.string(from: date)

if(dateText >= 4 && dateText <= 20) {
    print("I am th")
}

这里说,二进制运算符'&gt; ='不能应用于Int和String类型的操作数。我想检查这个范围内的值?

有人可以帮忙吗?

P.S。我得到了这个,当打印时我正确地获得了值,但是当我返回时我得到了一个错误

if((count! >= 4 && count! <= 20) || (count! >= 24 && count! <= 30)){
    return textVal = "I am th"
} else if(count! == 1 || count! == 21 || count! == 31) {
    return textVal = "I am st"
} else if(count! == 2 || count! == 22) {
    return textVal = "I am nd"
} else if(count! == 3 || count! == 23) {
    return textVal = "I am rd"
} else {
    print("I am known")
}

使用未解析的标识符'textVal'

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

发生错误是因为您无法返回从未声明过的变量

我建议使用switch声明

var dateText = dateFormatterPrint.string(from: date)
switch (dateText) {
case "1", "21", "31": dateText.append("st")
case "2", "22": dateText.append("nd")
case "3","23": dateText.append("rd")
default: dateText.append("th")
}
print(dateText)

答案 1 :(得分:1)

看起来你正试图格式化“序数”。最好的方法是配置NumberFormatter以使用ordinal数字样式:

let ordinalNumberFormatter = NumberFormatter()
ordinalNumberFormatter.numberStyle = .ordinal

// for example...
ordinalNumberFormatter.string(from: 22) // "22nd"
ordinalNumberFormatter.string(from: 28) // "28th"
ordinalNumberFormatter.string(from: 31) // "31st"

答案 2 :(得分:0)

我们无法比较String和Int

if(dateText >= "4" && dateText <= "20")
{
     print("I am th")
}