我有一个计算日期的函数:
Test.describe("wallpaper",function() {
Test.it("Basic tests",function() {
testing(wallpaper(6.3, 4.5, 3.29), 16);
testing(wallpaper(7.8, 2.9, 3.29), 16);
testing(wallpaper(6.3, 5.8, 3.13), 17);
testing(wallpaper(6.1, 6.7, 2.81), 16);
})})enter code here
然后我调用/设置功能如下:
func getFutureTime(_ timestamp: Double) -> String {
......
return "\(diffDateComponents.day) days"
}
但时间会显示为:
futureTimeLabel.text = " \(Date().getFutureTime(timeStamp))"
我如何安全地解开它以使它不打印作为可选项?
答案 0 :(得分:3)
可选是diffDateComponents.day
。
如果您真的非常确保day
属性是值,您可以使用diffDateComponents.day!
,例如:
return "\(diffDateComponents.day!) days"
否则,您可以使用??
运算符设置默认值:
return "\(diffDateComponents.day ?? defaultDaysCount) days"
或者,最佳解决方案:
if let days = diffDateComponents.day {
return "\(days) days"
} else {
return "Default message, when there're no days in future. The End is nigh, I guess…"
}
答案 1 :(得分:1)
你的问题不是函数返回类型,它在这一行:
return "\(diffDateComponents.day) days"
diffDateComponents.day是一个可选的Int,所以当你创建返回字符串时,它会像你看到的那样解释它。
在创建返回字符串之前将所需的可选项解压缩为/以解决此问题。例如
return "\(diffDateComponents.day!) days"