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