我有一个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'
有人可以帮忙吗?
答案 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")
}