Loop Swift不断崩溃应用程序

时间:2016-06-03 01:50:54

标签: arrays swift loops

我试图在Swift中使用repeat-while循环。我试图用它来获取数组中的项目并将其添加到变量中。

var finalEquation = ""
var arrayPoint = 0

        repeat {
            arrayPoint += 1
            finalEquation = finalEquation + String(equation[arrayPoint])
        } while (arrayPoint < equation.count)

所以我有一个名为&#34; arrayPoint&#34;的变量,每次循环运行时它会递增1。所以我遇到的问题就在于:

finalEquation = finalEquation + String(equation[arrayPoint])

此行获取数组中的项,该项等于 arrayPoint ,并将该数组项添加到变量中。

当我构建并运行代码时,它编译时没有任何错误并且不会阻止我。然后每当循环被激活时,应用程序就会冻结,在输出窗口中,我会得到一些说法。

fatal error: Index out of range
(lldb)

然后在我前面提到的那行代码中,它说:线程1:EXC_BAD_INSTRUCTION

2 个答案:

答案 0 :(得分:0)

首先,您可能会在UI线程中运行此循环,这是错误的。 第二,你在获取值之前递增变量。请在finalEquation行之后移动arrayPoint + = 1。

答案 1 :(得分:0)

在使用arrayPoint之前进行递增会使范围[1,count],但数组只有索引[0,count - 1]。

您应该将增量移动到repeat块中的最后一个。

var finalEquation = ""
var arrayPoint = 0

repeat {
    finalEquation = finalEquation + String(equation[arrayPoint])
    arrayPoint += 1
} while (arrayPoint < equation.count)

另一方面,arrayIndex将是一个更恰当的名称。用于引用数组中元素的数字称为“索引”。

此外,您应该阅读断点,以便您可以自己更好地调试这样的错误。