當我想要通過並從數組中移除項目或項目時(當滿足某些條件時),我通常會在C樣式for-loop中向後迭代並移除按索引逐項排列,避免了要處理的下一個項目的索引號被更改的問題,或者影響了循環通過次數的列表大小的變化。但C for循環已經在斯威夫特3.在Swift中向後迭代時安全地移除項目3
這裏被拆除是我環路初始化雨燕2.3代碼:
for (var i = allowedItems.count - 1; i > -1; i -= 1)
這裏是由斯威夫特3轉換器創建的怪物:
for (i in ((-1 + 1)...allowedItems.count - 1).reversed())
但是這個版本不能編譯。 (「in」運算符中的「Expected」,「separator」)。
我簡化 「-1 + 1」 位爲零:
for (i in (0...allowedItems.count - 1).reversed())
現在誤差 「爲for-each循環預期序列表達」。
什麼是安全的,希望合理優雅的方式在Swift 3中反向迭代,其中索引或計數器變量可用於指定哪些項目應該被刪除?這種類型的邏輯出現在我的代碼中的許多地方,所以我想確保找到最佳解決方案。
謝謝。
您是否嘗試過'for(i,item)in allowedItems.enumerated()。reversed(){...}'? – dasblinkenlight