2014-11-22 68 views
-2

在我迅速的遊戲我遍歷2個陣列運行每一幀(spritekit)像這樣Swift超出數組循環/捕獲異常?

 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) 


      } 
     } 
     } 

正如你可以在內環看到我有時刪除。但是,這有時會崩潰的錯誤,致命錯誤:數組索引超出範圍,我不知道這是如何發生的。我的2理論是1.因爲它運行每一幀,並有一個延遲它可能已經在下一個循環時,它被刪除或2.因爲循環迭代我從循環中刪除的數組可能不會重置後,它被刪除。我可以使用try catch(純粹的swift no Obj-C),但所有的例子都是爲了拋出我想忽略它們的錯誤。

所以我的問題是:我可以重置循環,或者我可以實現純粹的快速嘗試趕上?

+0

[Swift中的try-catch異常]的可能重複(http://stackoverflow.com/questions/24023112/try-catch-exceptions-in-swift) – holex 2014-11-22 10:18:47

回答

1

當您迭代它們時,您正在從集合中刪除項目。不要這樣做。相反,您可以收集您想要在數組中刪除的索引,然後在完成上述循環後,按相反​​順序(從最大到最小)刪除它們。