当前位置: 首页 > 知识库问答 >
问题:

Swift-nil在打开for循环的选项值时[重复]

丰俊艾
2023-03-14

我使用下面的代码来删除我的游戏中所有死的抛射物体,它工作得很好,但在随机的时候它会崩溃并突出显示指示行,这是一个致命的错误:

致命错误:在展开可选值(lldb)时意外发现nil

这是我正在使用的代码,错误在第4行

projs.removeAtIndex(...)

if (Projectile.deadProjs.isEmpty == false && Projectile.projs.isEmpty==false) {
    for i in 0...Projectile.deadProjs.count - 1 {            
        Projectile.projs.removeAtIndex(Projectile.projs.indexOf(Projectile.deadProjs[i])!);
    }
    Projectile.deadProjs.removeAll();
}

共有1个答案

宫俊远
2023-03-14

试着这样做:

if (Projectile.deadProjs.isEmpty == false && Projectile.projs.isEmpty==false) {
   for i in 0...Projectile.deadProjs.count - 1 {
      if let deadProjIdx = Projectile.projs.indexOf(Projectile.deadProjs[i]) {
         Projectile.projs.removeAtIndex(deadProjIdx);
      }
   }

   Projectile.deadProjs.removeAll();
}

编辑2N次:更好:

if !Projectile.deadProjs.isEmpty && !Projectile.projs.isEmpty {
   for deadPrj in Projectile.deadProjs {
      if let deadProjIdx = Projectile.projs.indexOf(deadPrj) {
         Projectile.projs.removeAtIndex(deadProjIdx)
      }
   }

   Projectile.deadProjs.removeAll()
}
 类似资料:
  • Swift 循环 该循环方式在 Swift 3 中已经弃用。 Swift for 循环用来重复执行一系列语句直到达成特定条件,一般通过在每次循环完成后增加计数器的值来实现。 语法 Swift for 循环的语法格式如下: for init; condition; increment{ 循环体 } 参数解析: init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量

  • Swift 循环 Swift for-in 循环用于遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。 语法 Swift for-in 循环的语法格式如下: for index in var { 循环体 } 流程图: 实例 1 import Cocoa for index in 1...5 { print("\(index) 乘于 5 为:\(i

  • 有没有更好的办法解决这个问题?

  • 问题内容: 我正在使用Xcode 6 Beta4。我有这种奇怪的情况,我无法弄清楚如何适当地测试可选项。 如果我有可选的xyz,则是正确的测试方法: 要么 这些文档说是第一种方法,但是我发现有时第二种方法是必需的,并且不会生成编译器错误,但是有时,第二种方法会生成编译器错误。 我的具体示例是使用桥接到swift的GData XML解析器: 在这里,如果我刚做过: 它将始终返回true。但是,如果我

  • 这是我的代码: 我的问题是如何检查分数是否在范围内,如果输入了错误的输入,如何使循环重复。当我试图运行程序并输入一个超过范围的输入时,它会转到下一个评估数字,而不是再次尝试,直到它是真的。

  • 致命错误:在展开可选值时意外发现nil。 我相信这很容易修复,但我对此相当陌生--我做错了什么?