如何在没有可变计数器的情况下编写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
的长度可能是
)。