【问题标题】:iOS Swift App Crashing: Array Index out of RangeiOS Swift App 崩溃:数组索引超出范围
【发布时间】:2015-08-24 03:34:14
【问题描述】:

当我运行游戏时,它通常会在第 19 面墙附近崩溃,并继续告诉我“数组索引超出范围”。我不太喜欢快速,到目前为止已经花了一个小时没有成功。如何解决错误?

import Foundation
import UIKit

let kMLGroundHeight: CGFloat = 20.0

let kDefaultXToMovePerSecond: CGFloat = 320.0

//CollisionDetection

let heroCategory: UInt32 = 0x1 << 0
let wallCategory: UInt32 = 0x1 << 1

//Levels
let kLevelGenerationTimes: [NSTimeInterval] = [0.8, 0.7, 0.6, 0.4, 0.3]
let kNumberOfPointsPerLevel = 5

【问题讨论】:

  • 如果我忘记发帖,请告诉我,以便我可以发帖。
  • 崩溃的地方是哪一行?好像都没有
  • 您发布的所有行都是常量。您的应用实际上做了什么?
  • 斯威夫特很好。您的代码中有逻辑问题;您正在访问一个数组,就好像它有比实际更多的元素一样。如果您需要帮助,请将实际代码发布到它崩溃的地方,但如果您在导致问题的代码中设置断点,Xcode 调试器可以轻松解决此问题。
  • 什么意思?当我运行游戏时,应用程序崩溃并且 Xcode 显示“数组索引超出范围”。虽然当元素相等时怎么可能呢?

标签: ios swift


【解决方案1】:

假设您有一个包含一个对象的数组:

let arr = ["hello"]

该数组的唯一有效索引是 0。arr[0] 是合法的。 arr[1] 不是。该数组有 1 个元素,但其索引号为 0。

这适用于任何数组。每个数组都包含一些元素。 它可能是 0 个元素,在这种情况下没有索引是合法的。可能是3 元素,在这种情况下,您可以通过索引引用数组的元素 数字 0、1 和 2。依此类推。就这样。这些是规则。你 不能使用任何其他索引号,否则会崩溃。

所以错误信息只是告诉你你犯了那个错误。你有一个数组kLevelGenerationTimes,它有 5 个元素。然后,您正在访问一个超出我刚刚解释的范围的元素。

这就是您需要知道的全部内容。错误消息告诉您程序中的错误。现在你可以修复它了。

来自HERE的参考。

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 2017-01-05
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多