为什么我的标签显示“你的猫是可选的(35)岁”,而它应该显示“你的猫是 35 岁?

Mar*_*Kim 1 label type-conversion ios swift

Swift 新手,我遇到了一个令人沮丧的问题。该程序正确编译并运行而不会崩溃。该程序应该根据用户输入的人类年数计算猫的年龄(以猫年为单位)。然而,按下按钮后,结果会显示“运算符”一词,并附加以括号分隔的猫年,即Optional(35)。这是我的代码:

@IBOutlet weak var getHumanYears: UITextField!
@IBOutlet weak var displayCatYears: UILabel!
@IBAction func calculateCatYears(_ sender: Any) 
{
    if let humanYears = getHumanYears.text
    {
        var catYears: Int? = Int(humanYears)
        catYears = catYears! * 7
        let catYearsString: String = String(describing: catYears)

        displayCatYears.text = "Your cat is " + catYearsString + " years old"
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么?感谢您的宝贵意见!

Swe*_*per 5

问题在这里:

String(describing: catYears)
Run Code Online (Sandbox Code Playgroud)

catYearsis an Optional<Int>,一个描述 an 的字符串,Optional<Int>格式为Optional(<value>)or nil。这就是为什么你得到Optional(35).

你需要解开catYears

String(describing: catYears!)
Run Code Online (Sandbox Code Playgroud)

或者,String(describing:)一起删除并执行:

if let humanYearsText = getHumanYears.text, let humanYears = Int(humanYearsText)
{
    let catYears = humanYears * 7
    displayCatYears.text = "Your cat is \(catYears) years old"
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

530 次

最近记录:

7 年,8 月 前