Swift 快速越界数组循环/捕获异常?

Swift 快速越界数组循环/捕获异常?,swift,Swift,在我的swift游戏中,我循环通过2个数组,每个帧都运行(spritekit),就像这样 正如你在内环中看到的,我有时会移除。但有时会出现错误,致命错误:数组索引超出范围,我不确定这是怎么发生的。我的两个理论是1。由于它每帧运行一次,并且其中一帧有延迟,所以当它被删除时,它可能已经在下一个循环中,或者是2。由于循环迭代我从循环中移除的数组,因此在移除后可能不会重置。我可以使用try-catch(纯swift-no-Obj-C),但是所有的例子都是关于抛出错误的,我想忽略它们 所以我的问题是:我可

在我的swift游戏中,我循环通过2个数组,每个帧都运行(spritekit),就像这样

正如你在内环中看到的,我有时会移除。但有时会出现错误,致命错误:数组索引超出范围,我不确定这是怎么发生的。我的两个理论是1。由于它每帧运行一次,并且其中一帧有延迟,所以当它被删除时,它可能已经在下一个循环中,或者是2。由于循环迭代我从循环中移除的数组,因此在移除后可能不会重置。我可以使用try-catch(纯swift-no-Obj-C),但是所有的例子都是关于抛出错误的,我想忽略它们


所以我的问题是:我可以重置循环吗?或者我可以在纯swift中实现一个try-catch吗?

在迭代集合时,您正在从集合中删除项。不要那样做。相反,您可以在数组中收集要删除的索引,然后在完成上述循环后按相反顺序(从最大到最小)删除它们。

可能的重复项
      override func update(currentTime: CFTimeInterval) {

        for (i, value) in enumerate(presents) {
          for (ii, pvalue) in enumerate(portals) {

           if(blah == true) {
               presants.removeAtIndex(i)
           }             

           //There is also some code that waits 1 second then runs
           portals.removeAtIndex(ii)


          }
        }
      }