当前位置: 首页 > 面试题库 >

无法分配值:“ i”是迅速的“ let”常量

竺勇
2023-03-14
问题内容

因此,基本上我想在2个标签中分配2个随机数,最多20个,用户将不得不找到正确的结果。根据答案是否正确,将出现不同的视图,这将发生10次。问题是我在使用的计数器“
i”上收到错误,即使我将其声明为变量,也收到错误消息说它是一个常量。

@IBAction func submit(sender: AnyObject) {
    //declarations
    var i: Int  //counter for 10 repetitions
    var result = 0
    for i in 0..<10 {
        //generate 2 random numbers up to 20
        var rn1 = arc4random_uniform(20)
        var rn2 = arc4random_uniform(20)
        //assign the rundom numbers to the labels
        n1.text = String(rn1)
        n2.text = String(rn2)
        result = Int((rn1) + (rn2))
        //show respective view based on if answer is correct or not
        if answer.text == String(result)  {
            i = i + 1 //here i get the error: cannot assign to value 'i' is a 'let' constant
            performSegueWithIdentifier("firstsegue", sender: self)
        }else {
            performSegueWithIdentifier("wrong", sender: self)
        }
    }
}

问题答案:

使用for var i in 0..<10 {克服了错误。

ifor i in 1..<10实际上是一个重新声明ifor范围,默认为let和覆盖以前的声明。介意,不知道您的逻辑在做什么,i在循环的中间不断增加。它与循环执行的次数没有区别-
参见下文:

var i: Int = -1  
print("Outer scope, i=\(i)") // i=-1
for var i in 0..<10 { // Will be executed 10 times, regardless of what you do to i in the loop
    print("Inner scope, i=\(i)") // i=0...9, including all
    if i == 2 {
        i = i + 10
        print("Inner, modified i=\(i)") // i=12
    }
}
print("Outer scope, i=\(i)") // i=-1

/* Complete output:
Outer scope, i=-1
Inner scope, i=0
Inner scope, i=1
Inner scope, i=2
Inner, modified i=12
Inner scope, i=3
Inner scope, i=4
Inner scope, i=5
Inner scope, i=6
Inner scope, i=7
Inner scope, i=8
Inner scope, i=9
Outer scope, i=-1
*/

重要的一点是,Swift for i in循环 不是 C for (i=0; i<10; i++)循环。



 类似资料:
  • 问题内容: 我有一个尝试转换为Swift 3的Gradient类,但是出现以下错误 迅速无法使用“ CGPointMake” 对于 任何人都可以帮我解决我可以代替的东西 这是全班; 问题答案: 您可以迅速创建一个快捷方式。因此,将您更改为

  • 问题内容: 我通常会隐藏状态栏 但是Xcode给我一个错误,说“方法不会覆盖 其超类中的任何内容”。 如果我删除override,则Xcode会给出另一个错误:“ 带有Objective-C选择器’prefersStatusBarHidden’的方法’prefersStatusBarHidden()’与 具有相同Objective-C选择器的 超类 ‘UIViewController’的gette

  • 在WWW中我发现了一个面试问题,其中一个是: 下面代码段的输出是什么: 答案是: 我正在Xcode中运行这段代码,结果是: 请帮我了解一下是怎么一步一步进行的。我对正在发生的事情有想法,但不确定。什么是Kondana类,为什么使用上面的语法,我知道这是通用的,但不理解输出?

  • 下面是代码、json文件和我在执行代码时得到的异常。 //JSON //读取上述JSON格式时发生异常 04-18 07:07:09.089 314 44-31460/?E/DOINBackgroupExcp:无法读取JSON:无法解析日期值“i”(格式:“YYYY-MM-DD”):无法解析的日期:“i”(通过引用链:com.example.admin.myApplication.ShiftPla

  • 我是Swift新手,这段代码给了我一个错误,尽管它没有文本,但它还是通过了“lastname!=nil”。 线程1:致命错误:在展开一个可选值时意外地找到nil 我很困惑,不知道为什么验证不起作用

  • 问题内容: 我想要一个数字数组上的函数(或任何可加的事物的有序集合),该函数返回长度相同的数组,其中每个元素是A中所有元素的总和, 直到一个include。 例子: 我可以使用for循环或其他方式执行此操作。还有更多功能选择吗?它有点像reduce,只是它会构建一个包含所有中间值的结果数组。 更通用的是具有可以接受任何序列并提供输入序列的总运行时间的函数。 问题答案: 您正在寻找的通用组合器通常称