Swift:无法为“ int”类型的值分配“ int”类型的值?错误

JPC12

我开始学习快速,但是遇到了一个错误。Ive刚刚从我遵循的课程中创建了一个非常简单的应用,该应用根据用户输入的内容来计算猫的年龄。该应用程序的第一个版本只是将用户输入的内容乘以7的时间,而我设法做到这一点没有问题。我以为我可以玩我写的东西,并更改它以达到以下目的:

  • 第一个人年= 15猫年
  • 第二个人年= +10
  • 第三个人年= +4
  • 第4个人年= +4
  • 第5个人年= +4

很快..

例如,四岁的猫在猫年中将是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'的值?”

我真的不明白为什么这个值不能是整数,任何帮助都很好。

马丁·R

主要的错误(如我在评论中所说)是您将赋值运算符 =相等运算符 混为一谈==比较应该是

if enteredAge == 1 { ... }

下一个问题是(如keithbhunter在其答案中已经提到的),toInt()返回一个可选值,即nil如果字符串不是有效的整数,则应使用可选绑定

if let enteredAge = enterAge.text.toInt() {
   // compute cat years ... 
} else {
   // report invalid input ...
}

附加条款:

  • 在该方法中所有的变量可以声明为常量let
  • 有3个相同的分配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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法分配类型为'MDLMaterialProperty ?!'的值 到'Int'类型的值

无法将类型“ IndexPath”的值分配为类型“ Int”

无法将类型“ Int”的值分配给类型“ Int?”

获取“无法将类型 'CLLocationDegrees'(又名'Double')的值分配给类型'Int'”错误(Swift 4)

快速操场中的错误:无法将类型“Int”的值分配给类型“[Int]”

无法将“Int”类型的值分配给“String”类型

错误:无法将“List<dynamic>”类型的值分配给“List<int>”类型的变量

错误:无法将类型“ void *”的值分配给类型“ int **”的实体

Swift CoreData-无法将类型'Int'的值分配给类型'Int16'

错误无法初始化右值类型为'int'的类型为'int *'的参数

收到错误:无法使用类型为'int'的右值的地址

无法将类型为int的值分配给类型为node的实体

无法分配“字符串”类型的值?输入'Int'

无法分配“Int!”类型的值 输入“字符串”

swift无法将“Int”类型的值分配给“String”类型

Swift 4:无法为类型为'String'的值下标为'CountablePartialRangeFrom <Int>'类型的索引

无法为类型为[Int]的类型为[[NSIndexPath]]的值下标

错误“无法将类型为“ int”的值转换为预期的参数类型为“ UInt”

无法将“ int”类型的值分配给“ String”类型的值?

无法为索引类型为int的[CLPlacemark]类型的值下标

LINQ错误:不能将空值分配给类型为System.Int32的成员,该类型是非空值类型

冬眠 PSQLException:类型为int的值错误:admin

类型为int的算术溢出错误,值= 4957500001.400178

无法下标'[(String)]类型的值?索引类型为“ Int”

无法使用索引类型为((Int,()->())'的下标类型[[xxx]]的值

Swift中的NSDictionary:无法下标“ AnyObject”类型的值?索引类型为“ Int”

无法将类型“ Int”的值分配给类型“ String?” 在(cellForRowAt)中使用Tableview

将值分配给键类型为<Tuple <int,int> C#的Dictionary

Swift错误:无法将'Int32'类型的值转换为预期的参数类型'Int32'