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



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

        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])
            }
        }

您本来就不应该使用for循环来达到这个目的。在循环中修改循环变量容易出错循环的C样式被弃用的原因示例。

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

columnsSortTypesArray = columnsSortTypesArray.filter { $0 != "" }

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

listViews = columnsSortTypesArray.map { sortList($0) }

另外:如果您有两个(或多个)阵列,必须始终保留同时,考虑定义具有两个(或多个)属性的struct WhatEver而是使用这些CCD_ 4元件的单个阵列。

相关内容

最新更新