Bool{ var lyear: Bool = false if(year=1582) { if(((year%4)-6ren">
gpt4 book ai didi

swift - "Cannot force unwrap value of non-optional type ' Int '"错误?

转载 作者:可可西里 更新时间:2023-11-01 00:13:44 26 4
gpt4 key购买 nike

func decideLeapYear(year: Int) -> Bool{
var lyear: Bool = false
if(year<1582){
if(((year/4)%1)==0){
lyear = true
}
}
else if(year>=1582)
{
if(((year%4)==0) || (year%400==0) && ((year%100)!=0)){
lyear = true
}
}

return lyear
}

else if 语句中的 if 语句末尾,Xcode 抛出这个错误:

Cannot force unwrap value of non-optional type 'Int'

当它到达语句时:

((year%100)!=0))

谁能解释为什么以及如何解决这个问题?

最佳答案

这是因为编译器认为 ((year%100)!=0)) 实际上是 ((year%100)!= 0)) 等等尝试打开 (year%100)!

解决方法是在!=前加一个空格:

func decideLeapYear(year: Int) -> Bool{
var lyear: Bool = false
if(year<1582){
if(((year/4)%1)==0){
lyear = true
}
}

else if(year>=1582)
{
if(((year%4)==0) || (year%400==0) && ((year%100) != 0)) {
lyear = true
}
}

return lyear
}

另外,请注意:您不需要将条件括在方括号中,并且代码中的空格字符不会产生任何成本。所以我建议像这样为您的代码添加一些空气:

func decideLeapYear(year: Int) -> Bool {
if year < 1582 {
if (year / 4) % 1 == 0 {
return true
}
} else if year >= 1582 {
if year % 4 == 0 || year % 400 == 0 && year % 100 != 0 {
return true
}
}
return false
}

我还删除了 bool 变量以使代码更加简洁。

关于swift - "Cannot force unwrap value of non-optional type ' Int '"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com