我开始学习快速,但是遇到了一个错误。Ive刚刚从我遵循的课程中创建了一个非常简单的应用,该应用根据用户输入的内容来计算猫的年龄。该应用程序的第一个版本只是将用户输入的内容乘以7的时间,而我设法做到这一点没有问题。我以为我可以玩我写的东西,并更改它以达到以下目的:
很快..
例如,四岁的猫在猫年中将是33岁。
所以我想在结果标签中说您是猫年33岁
这是我编写的代码:
@IBAction func findAge(sender: AnyObject) {
var enteredAge = enterAge.text.toInt()
if enteredAge = 1 {
var catYears = 15
resultLabel.text = "You're cat is \(catYears) in cat years"
} else if enteredAge = 2 {
var catYears = 25
resultLabel.text = "You're cat is \(catYears) in cat years"
} else {
var catYears = (15 + 25) + (enteredAge - 2) * 4
resultLabel.text = "You're cat is \(catYears) in cat years"
}
}
@IBOutlet weak var enterAge: UITextField!
@IBOutlet weak var resultLabel: UILabel!
我收到的错误在第17行“ if enterAge = 1 {”,它指出此错误“无法将类型为'int'的值分配给类型为'int'的值?”
我真的不明白为什么这个值不能是整数,任何帮助都很好。
主要的错误(如我在评论中所说)是您将赋值运算符 =
和相等运算符 混为一谈==
。比较应该是
if enteredAge == 1 { ... }
下一个问题是(如keithbhunter在其答案中已经提到的),toInt()
返回一个可选值,即nil
如果字符串不是有效的整数,则应使用可选绑定:
if let enteredAge = enterAge.text.toInt() {
// compute cat years ...
} else {
// report invalid input ...
}
附加条款:
let
。resultLabel.text = ...
,可以简化。if ... else if ... else
您可以使用一条switch
语句。然后您的方法将如下所示:
if let enteredAge = enterAge.text.toInt() {
let catYears : Int
switch(enteredAge) {
case 1:
catYears = 15
case 2:
catYears = 25
default:
catYears = (15 + 25) + (enteredAge - 2) * 4
}
resultLabel.text = "You're cat is \(catYears) in cat years"
} else {
resultLabel.text = "Please enter a valid number"
}
一种替代方法是使用条件运算符 ?:
(有时也称为三元运算符):
if let enteredAge = enterAge.text.toInt() {
let catYears = enteredAge == 1 ? 15 :
enteredAge == 2 ? 25 : (15 + 25) + (enteredAge - 2) * 4
resultLabel.text = "You're cat is \(catYears) in cat years"
} else {
resultLabel.text = "Please enter a valid number"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句