如何在没有可变计数器的情况下编写Swift 3循环

如何在没有可变计数器的情况下编写Swift 3循环,swift,Swift,如果循环发现不应该存在的元素并将其删除,则循环将循环计数器递减 var iMax = numListViews for var i = 0; i < numListViews; i += 1 { if (columnsSortTypesArray[i] == "") { columnsSortTypesArray.removeAtIndex(i) i--

如果循环发现不应该存在的元素并将其删除,则循环将循环计数器递减

        var iMax = numListViews
        for var i = 0; i < numListViews; i += 1 {
            if (columnsSortTypesArray[i] == "") {
                columnsSortTypesArray.removeAtIndex(i)
                i--
                iMax--
            } else {
                listViews[i].sortList(columnsSortTypesArray[i])
            }
        }
var iMax=numListViews
对于var i=0;我的观点是否定的;i+=1{
if(ColumnSortTypesArray[i]==“”){
ColumnSortTypeSarray.removeAtIndex(一)
我--
iMax--
}否则{
ListView[i].sortList(ColumnSortTypesArray[i])
}
}

首先,您不应该为此目的使用for循环。 在循环中修改循环变量容易出错,是一个很好的选择 示例C-style for循环被弃用的原因

要从数组中删除空字符串,请使用
filter()

要基于此数组填充另一个数组,请使用
map()
,例如

listViews = columnsSortTypesArray.map { sortList($0) }
另外:如果您有两个(或更多)数组,则必须始终保留它们 在同步中,考虑用两个(或多个)属性定义<代码>结构> < < /代码> >
并使用这些
元素的单个数组来代替任何
元素。

首先,您不应该使用for循环来实现此目的。 在循环中修改循环变量容易出错,是一个很好的选择 示例C-style for循环被弃用的原因

要从数组中删除空字符串,请使用
filter()

要基于此数组填充另一个数组,请使用
map()
,例如

listViews = columnsSortTypesArray.map { sortList($0) }
另外:如果您有两个(或更多)数组,则必须始终保留它们 在同步中,考虑用两个(或多个)属性定义<代码>结构> < < /代码> >
并使用这些
元素的单个数组来代替
元素。

什么是
列表视图
?和
columnsortTypeSarray
,它是
字符串
数组吗?
.sortList
方法应用于
i
:th
列表视图的远程通讯是什么?请看一看,并可能更新您的问题与更相关的(但非臃肿)信息。您的原始代码已经有点模糊。请看一下
filter()
方法!此外,还有一条关于上述代码的注释:如果
ColumnSortTypeSarray
的长度(num.elements)仅略大于
numListViews
,但包含多个
条目,该怎么办?这可能会在
ColumnSortTypeSarray[i]
(尝试)元素访问时产生运行时异常,因为
i
在从
ColumnSortTypeSarray
中删除多个后续元素后会增加(之后
ColumnSortTypeSarray
的长度可能是
).什么是
列表视图
?和
columnsortTypeSarray
,它是
字符串
数组吗?
.sortList
方法应用于
i
:th
列表视图的远程通讯是什么?请看一看,并可能更新您的问题与更相关的(但非臃肿)信息。您的原始代码已经有点模糊。请看一下
filter()
方法!此外,还有一条关于上述代码的注释:如果
ColumnSortTypeSarray
的长度(num.elements)仅略大于
numListViews
,但包含多个
条目,该怎么办?这可能会在
ColumnSortTypeSarray[i]
(尝试)元素访问时产生运行时异常,因为
i
在从
ColumnSortTypeSarray
中删除多个后续元素后会增加(之后
ColumnSortTypeSarray
的长度可能是
)。