我正在使用以下代码删除游戏中所有死亡的射弹物体,它的效果非常好,但是随机时间它会崩溃并突出显示指示行并发出此致命错误:
致命错误:在展开Optional值(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();
}
答案 0 :(得分:4)
尝试这样做:
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();
}
编辑2次: 甚至更好:
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()
}